| 13 | } |
| 14 | |
| 15 | LLDAModelObject::LLDAModelObject(size_t tw, size_t minCnt, size_t minDf, size_t rmTop, |
| 16 | size_t k, PyObject* alpha, float eta, PyObject* seed, |
| 17 | PyObject* corpus, PyObject* transform) |
| 18 | { |
| 19 | if (PyErr_WarnEx(PyExc_DeprecationWarning, "`tomotopy.LLDAModel` is deprecated. Please use `tomotopy.PLDAModel` instead.", 1)) throw py::ExcPropagation{}; |
| 20 | |
| 21 | tomoto::LDAArgs mArgs; |
| 22 | mArgs.k = k; |
| 23 | if (alpha) |
| 24 | { |
| 25 | mArgs.alpha = broadcastObj<tomoto::Float>(alpha, mArgs.k, |
| 26 | [&]() { return "`alpha` must be an instance of `float` or `List[float]` with length `k` (given " + py::repr(alpha) + ")"; } |
| 27 | ); |
| 28 | } |
| 29 | mArgs.eta = eta; |
| 30 | if (seed && seed != Py_None && !py::toCpp<size_t>(seed, mArgs.seed)) |
| 31 | { |
| 32 | throw py::ValueError{ "`seed` must be an integer or None." }; |
| 33 | } |
| 34 | |
| 35 | inst = tomoto::ILLDAModel::create((tomoto::TermWeight)tw, mArgs); |
| 36 | if (!inst) throw py::ValueError{ "unknown tw value" }; |
| 37 | isPrepared = false; |
| 38 | seedGiven = !!seed; |
| 39 | minWordCnt = minCnt; |
| 40 | minWordDf = minDf; |
| 41 | removeTopWord = rmTop; |
| 42 | |
| 43 | insertCorpus(corpus, transform); |
| 44 | } |
| 45 | |
| 46 | std::optional<size_t> LLDAModelObject::addDoc(PyObject* words, PyObject* labels, bool ignoreEmptyWords) |
| 47 | { |