Я пытаюсь лемматизировать документы с помощью следующих кодов. Лемматизация работает. Это производит строку байта. Следовательно, следующая часть кодов выдает ошибку «cant concan byte to str». Затем я изменил токены как str (), как указано в кодах ниже. Вывод кода приведен ниже; (я использую Python 3.7 (64 бит))
AttributeError Traceback (most recent call last)
<ipython-input-223-cb505389f802> in <module>
1 #Build a Vocabulary
----> 2 model.build_vocab(train_demo_corpus)
~\Anaconda3\lib\site-packages\gensim\models\doc2vec.py in build_vocab(self, documents, update, progress_per, keep_raw_vocab, trim_rule, **kwargs)
727 """
728 total_words, corpus_count = self.vocabulary.scan_vocab(
--> 729 documents, self.docvecs, progress_per=progress_per, trim_rule=trim_rule)
730 self.corpus_count = corpus_count
731 report_values = self.vocabulary.prepare_vocab(
~\Anaconda3\lib\site-packages\gensim\models\doc2vec.py in scan_vocab(self, documents, docvecs, progress_per, trim_rule)
807 for document_no, document in enumerate(documents):
808 if not checked_string_types:
--> 809 if isinstance(document.words, string_types):
810 logger.warning(
811 "Each 'words' should be a list of words (usually unicode strings). "
AttributeError: 'str' object has no attribute 'words'
вот мой код;
train_demo_corpus = list(lemmat(lee_train_demo_file))
def lemmat(fname, tokens_only=False):
with smart_open.smart_open(fname, encoding="iso-8859-1") as f:
for i, line in enumerate(f):
tokens = gensim.utils.lemmatize(line)
if tokens_only:
yield str(tokens)
else:
# For training data, add tags
yield str(gensim.models.doc2vec.TaggedDocument(tokens, [i]))
model = gensim.models.doc2vec.Doc2Vec(vector_size=50, min_count=2, epochs=40)
model.build_vocab(train_demo_corpus)
С уважением,