vendor/tomotopy/src/TopicModel/DMRModel.hpp in tomoto-0.1.2 vs vendor/tomotopy/src/TopicModel/DMRModel.hpp in tomoto-0.1.3
- old
+ new
@@ -260,66 +260,47 @@
{
if (_sigma <= 0) THROW_ERROR_WITH_INFO(std::runtime_error, text::format("wrong sigma value (sigma = %f)", _sigma));
}
template<bool _const = false>
- _DocType& _updateDoc(_DocType& doc, const std::vector<std::string>& metadata)
+ _DocType& _updateDoc(_DocType& doc, const std::string& metadata)
{
- std::string metadataJoined = text::join(metadata.begin(), metadata.end(), "_");
Vid xid;
if (_const)
{
- xid = metadataDict.toWid(metadataJoined);
+ xid = metadataDict.toWid(metadata);
if (xid == (Vid)-1) throw std::invalid_argument("unknown metadata");
}
else
{
- xid = metadataDict.add(metadataJoined);
+ xid = metadataDict.add(metadata);
}
doc.metadata = xid;
return doc;
}
- size_t addDoc(const std::vector<std::string>& words, const std::vector<std::string>& metadata) override
+ size_t addDoc(const RawDoc& rawDoc, const RawDocTokenizer::Factory& tokenizer) override
{
- auto doc = this->_makeDoc(words);
- return this->_addDoc(_updateDoc(doc, metadata));
+ auto doc = this->template _makeFromRawDoc<false>(rawDoc, tokenizer);
+ return this->_addDoc(_updateDoc(doc, rawDoc.template getMisc<std::string>("metadata")));
}
- std::unique_ptr<DocumentBase> makeDoc(const std::vector<std::string>& words, const std::vector<std::string>& metadata) const override
+ std::unique_ptr<DocumentBase> makeDoc(const RawDoc& rawDoc, const RawDocTokenizer::Factory& tokenizer) const override
{
- auto doc = as_mutable(this)->template _makeDoc<true>(words);
- return make_unique<_DocType>(as_mutable(this)->template _updateDoc<true>(doc, metadata));
+ auto doc = as_mutable(this)->template _makeFromRawDoc<true>(rawDoc, tokenizer);
+ return make_unique<_DocType>(as_mutable(this)->template _updateDoc<true>(doc, rawDoc.template getMisc<std::string>("metadata")));
}
- size_t addDoc(const std::string& rawStr, const RawDocTokenizer::Factory& tokenizer,
- const std::vector<std::string>& metadata) override
+ size_t addDoc(const RawDoc& rawDoc) override
{
- auto doc = this->template _makeRawDoc<false>(rawStr, tokenizer);
- return this->_addDoc(_updateDoc(doc, metadata));
+ auto doc = this->_makeFromRawDoc(rawDoc);
+ return this->_addDoc(_updateDoc(doc, rawDoc.template getMisc<std::string>("metadata")));
}
- std::unique_ptr<DocumentBase> makeDoc(const std::string& rawStr, const RawDocTokenizer::Factory& tokenizer,
- const std::vector<std::string>& metadata) const override
+ std::unique_ptr<DocumentBase> makeDoc(const RawDoc& rawDoc) const override
{
- auto doc = as_mutable(this)->template _makeRawDoc<true>(rawStr, tokenizer);
- return make_unique<_DocType>(as_mutable(this)->template _updateDoc<true>(doc, metadata));
- }
-
- size_t addDoc(const std::string& rawStr, const std::vector<Vid>& words,
- const std::vector<uint32_t>& pos, const std::vector<uint16_t>& len,
- const std::vector<std::string>& metadata) override
- {
- auto doc = this->_makeRawDoc(rawStr, words, pos, len);
- return this->_addDoc(_updateDoc(doc, metadata));
- }
-
- std::unique_ptr<DocumentBase> makeDoc(const std::string& rawStr, const std::vector<Vid>& words,
- const std::vector<uint32_t>& pos, const std::vector<uint16_t>& len,
- const std::vector<std::string>& metadata) const override
- {
- auto doc = this->_makeRawDoc(rawStr, words, pos, len);
- return make_unique<_DocType>(as_mutable(this)->template _updateDoc<true>(doc, metadata));
+ auto doc = as_mutable(this)->template _makeFromRawDoc<true>(rawDoc);
+ return make_unique<_DocType>(as_mutable(this)->template _updateDoc<true>(doc, rawDoc.template getMisc<std::string>("metadata")));
}
GETTER(F, size_t, F);
GETTER(Sigma, Float, sigma);
GETTER(AlphaEps, Float, alphaEps);