我有一个约1000个文件的小系统。 对于每个文档,我想显示指向X"最相似的"文档。
但是,这些文件没有任何标记,所以这将是某种无监督的方法。
感觉fasttext是一个很好的候选人,但是当我没有标记数据时,我无法理解如何做到这一点。
我可以计算单词向量,虽然我真正需要的是整个文档的向量。
答案 0 :(得分:0)
Paragraph Vector
算法(在Python Doc2Vec
等库中称为gensim
)可以训练一个模型,该模型将为一个文本字段提供单个向量,因此可能是对您有用。但请注意,典型的已发布作品使用数万到数百万个文档。 (仅1,000只是一个非常小的训练集。)
您还可以简单地将文本的所有单词向量平均(可能以某种加权方式),以获得全文的简单粗略向量,这通常在某种程度上可用于此目的。 (为此,您可以使用classi word2vec或FastText中的单词向量。)
同样,如果你有单词向量而不是完整的doc-vector,那么就有一种叫做" Word Mover' Distance"计算一个字向量调整的距离"两篇文章之间。虽然计算起来有些昂贵(特别是对于较长的文本),但它通常很好地突出了近述释义。
在某些情况下,只需将所有文档转换为他们的"文字袋"表示 - 一个包含所用单词数量的巨型向量 - 然后根据他们共享的单词数排名文档是一个足够好的相似性度量。
此外,全文索引/搜索框架(如SOLR或ElasticSearch)有时可以将完整文档作为查询,从而提供排名靠前的结果。 (这通常通过选择示例文档中最重要的单词,并将这些单词用作针对完整文档集的模糊全文查询来实现。)