问题描述
我的目标是在单词和文档之间找到相似之处。例如,我想查找“新”和文档之间的相似性,为简单起见,说“ Hello World!”。
我使用了gensim的word2vec,但问题是它找不到未见到的单词的相似性。因此,我尝试使用gensim中的fastText,因为它可以找到词汇量之外的单词的相似性。
以下是我的文档数据示例:
[['This','is','the','only','rule','of','our','household'],['If','you','feel','a','presence','standing','over','while','sleep','do'],['NOT','open','your','eyes'],['Ignore','it','and','try','to','fall','asleep'],['This','may','sound','bit','like','show','Bird','Box','from','Netflix']]
我只是像这样训练数据:
from gensim.models.fasttext import FastText
model = FastText(sentences_cleaned)
因此,我想查找“规则”与本文档之间的相似之处。
model.wv.most_similar("rule")
但是,fastText给了我这个:
[('the',0.1334390938282013),('they',0.12790171802043915),('in',0.12731242179870605),('not',0.12656228244304657),('and',0.11071767657995224),('of',0.08563747256994247),('I',0.06609072536230087),('that',0.05195673555135727),('The',0.002402491867542267),('my',-0.009009800851345062)]
显然,由于“ rule”一词出现在文档的第一句中,因此必须具有“ rule”作为最相似之处。我也尝试过词干/词根化,但这也不起作用。
我的输入格式正确吗?我已经看到很多文档都使用.cor或.bin格式,但我不知道这些是什么。
感谢您的回复!
解决方法
model.wv.most_similar('rule')
要求该模型的词向量集(.wv
)返回与'rule'
最相似的词。也就是说,您既没有提供任何文档(多个单词)作为查询,也没有提供FastText
模型返回文档本身或任何文档名称的方式。只是言语而已。
虽然FastText在文本(单词列表)上训练,但仅对单词/子单词进行建模。因此,目前尚不清楚您的期望是什么:答案是否正确。
那些看起来不太像'rule'
的单词,但是如果您使用大量不同的数据训练它们,那么FastText
(以及类似的word2vec算法)只会得到好的结果显示了相关单词的许多微妙的现实用法。
您的sentences_cleaned
数据中有多少个文本,有多少个单词? ('rule'
和相关词有多少用途?)
在任何真实的FastText
/ Word2Vec
/ etc模型中,使用足够的数据/参数进行训练,没有一个句子(如您的第一个句子)可以告诉您有关结果“应该”如何的信息。那只是从完整的丰富数据集中出现的。