我有一个包含 2000 个文档的数据集,其中平均文档大小为 300 个单词。词汇以特定领域的词为主。
我的目标是找到类似的文件。为此,我尝试了 LDA、LSI、Doc2Vec (topics=100),但结果不是很好。在我的数据集中,LSI 比其他的要好。我也尝试了 word2vec (size=100) & word movers distance,但还是没有运气。我正在考虑尝试 POS 标签,然后构建一些本体模型,但不确定。
我的结果很差是因为数据集不好吗?我可以尝试哪些其他技术?
我有一个包含 2000 个文档的数据集,其中平均文档大小为 300 个单词。词汇以特定领域的词为主。
我的目标是找到类似的文件。为此,我尝试了 LDA、LSI、Doc2Vec (topics=100),但结果不是很好。在我的数据集中,LSI 比其他的要好。我也尝试了 word2vec (size=100) & word movers distance,但还是没有运气。我正在考虑尝试 POS 标签,然后构建一些本体模型,但不确定。
我的结果很差是因为数据集不好吗?我可以尝试哪些其他技术?
文档的相似性可以通过不同的方法来完成。
由于您的文档基于基于域的单词,您可以为每个文档使用 tfidf 表示并基于此计算相似度。
以前,我使用 word2vec 表示单词并通过取所有向量的平均值(作为方法之一)构建文档向量,并在这些向量之间进行余弦相似度。基本上是一个 n*n 相似度计算。
当您进行主题建模时,即使想法是找到具有相似主题分布的文档,也有一个先验方法,即识别主题数量。仅使用随机 100 个主题而不查看单词的分布可能会导致您走错路。
我最近遇到的一个非常有趣的方法是结合主题建模和词向量,这里是stitchfix的博客链接:http: //multithreaded.stitchfix.com/blog/2016/05/27/lda2vec/
如果您不确定必须作为 piori 传递的主题数量。您可以使用 C_V 或 u_mass 的连贯性技术来获得数据集的最佳主题数。
词嵌入不佳的一个原因可能是文档数量少。我认为值得尝试预训练的词向量(例如谷歌新闻向量:https ://github.com/mmihaltz/word2vec-GoogleNews-vectors )。您确实提到了大量特定领域的单词,这可能是一个问题,但是这些向量是用非常大的词汇量训练的。
否则,我会支持使用更简单的方法,例如 tf-idf 缩放词频,可能会限制词汇量并降低维度。