| 149 | } |
| 150 | |
| 151 | LDAModelObject::LDAModelObject(size_t tw, size_t minCnt, size_t minDf, size_t rmTop, |
| 152 | size_t k, PyObject* alpha, float eta, PyObject* seed, |
| 153 | PyObject* corpus, PyObject* transform) |
| 154 | { |
| 155 | tomoto::LDAArgs mArgs; |
| 156 | mArgs.k = k; |
| 157 | if (alpha) |
| 158 | { |
| 159 | mArgs.alpha = broadcastObj<tomoto::Float>(alpha, mArgs.k, |
| 160 | [&]() { return "`alpha` must be an instance of `float` or `List[float]` with length `k` (given " + py::repr(alpha) + ")"; } |
| 161 | ); |
| 162 | } |
| 163 | mArgs.eta = eta; |
| 164 | if (seed && seed != Py_None && !py::toCpp<size_t>(seed, mArgs.seed)) |
| 165 | { |
| 166 | throw py::ValueError{ "`seed` must be an integer or None." }; |
| 167 | } |
| 168 | |
| 169 | inst = tomoto::ILDAModel::create((tomoto::TermWeight)tw, mArgs); |
| 170 | if (!inst) throw py::ValueError{ "unknown tw value" }; |
| 171 | isPrepared = false; |
| 172 | seedGiven = !!seed; |
| 173 | minWordCnt = minCnt; |
| 174 | minWordDf = minDf; |
| 175 | removeTopWord = rmTop; |
| 176 | |
| 177 | insertCorpus(corpus, transform); |
| 178 | } |
| 179 | |
| 180 | py::UniqueObj LDAModelObject::addCorpus(PyObject* corpus, PyObject* transform) |
| 181 | { |