Python, gensim, doc2ve c. Классифицировать фразы по темам - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть несколько известных тем и набор данных с фразами на эти темы. В результате мне нужно получить тему фразы, которой нет в наборе данных. Я тренирую модель gensim doc2ve c на этом наборе данных, используя только фразы. Здесь TaggedDocument представляет собой список слов фразы.

train_data = list(create_tagged_document(data))
#> [TaggedDocument(words=['anarchism', 'originated', ... 'social', 'or', 'emotional'], tags=[0])]
model = gensim.models.doc2vec.Doc2Vec(vector_size=50, min_count=2, epochs=1000)
model.build_vocab(train_data)
model.train(train_data, total_examples=model.corpus_count, epochs=model.epochs)

Тогда я найду наиболее близкие фразы к новой фразе.

test_vec = model.infer_vector(['lorem', 'ipsum', 'new', 'phrase', 'words'])
similars = model.docvecs.most_similar([test_vec], topn=len(model.docvecs))

После этого я проверяю темы ближайших фраз (вероятно, на основе косинусного сходства) и, если самые близкие фразы достаточно близки, решаю, что новая фраза имеет ту же тему, что и самая близкая. Имеет ли этот подход смысл? И правильно ли использовалась модель doc2ve c?

...