word2vec - 使用 fasttext 或 word2vec 计算最近的文档

标签 word2vec knn tf-idf nearest-neighbor fasttext

我有一个包含大约 1000 个文档的小型系统。 对于每个文档,我想显示 X 个“最相似”文档的链接。

但是,文档没有以任何方式标记,因此这将是某种无监督方法。

感觉 fasttext 是一个很好的候选者,但我无法思考在没有标记数据的情况下如何做到这一点。

我可以计算词向量,尽管我真正需要的是整个文档的向量。

最佳答案

Paragraph Vector 算法,在 Python gensim 等库中称为 Doc2Vec,可以训练一个模型,该模型将为文本运行,因此可能对您的需求有用。但请注意,典型的已发表作品使用数万到数百万份文档。 (只有 1,000 个训练集就非常小了。)

您还可以简单地将文本的所有词向量平均在一起(可能以某种加权方式),以获得全文的简单、粗略的向量,这通常在某种程度上可以达到此目的。 (为此,您可以使用 classi word2vec 或 FastText 中的词向量。)

类似地,如果您有词向量但没有完整的文档向量,则有一种称为“词移动器距离”的技术,可以计算两个文本之间经过词向量调整的“距离”。尽管计算成本较高(尤其是较长的文本),但它在突出显示近似释义方面通常表现良好。

在某些情况下,只需将所有文档转换为其“词袋”表示形式(一个包含所用单词计数的巨大向量),然后根据文档共享的单词数量对文档进行排名,这就是足够好的相似性度量。

此外,全文索引/搜索框架(例如 SOLR 或 ElasticSearch)有时可以将完整文档作为查询,从而给出排名良好的结果。 (这通常通过选择示例文档中最重要的单词,并将这些单词用作针对完整文档集的模糊全文查询来实现。)

关于word2vec - 使用 fasttext 或 word2vec 计算最近的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50738640/

相关文章:

java - 如何计算两个 vector 的余弦相似度?

python - 将 scipy.sparse.csr.csr_matrix 转换为列表列表

python-3.x - gensim 词嵌入(Word2Vec 和 FastText)模型中的 alpha 值?

java - word2vec 是否可以很好地处理包含两种语言文本的语料库?

python - 如何改进Python中的距离函数

algorithm - 哪种哈希算法适合图像局部描述符?

python - TF-IDF的纯pandas实现

python - Word2Vec 模型未进行训练,输入句子尝试使用列表中的句子序列和标记化单词

python - 词嵌入的语义加权均值

algorithm - 为什么 KNN 比决策树快得多?