我是机器学习的新手。我有 100 个文本文档。我需要在这 100 个文本文档上建立一个模型,如果我提供新文档,它必须给出这个新文档是否与这 100 个文档相似。哪个是这个问题的最佳模型?
如何对文档进行分类,无论它们是否与以前的文档相似?
数据挖掘
机器学习
文本挖掘
2022-02-20 16:55:30
2个回答
检查哪个是最佳模型的唯一方法是在实践中尝试不同并进行比较。你有任何不相似的文件来训练吗?您是否为这 100 个分配了标签或主题?
假设您有一些不相关的文档,您可以使用“垃圾邮件”方法来解决此类问题。
我将从代表您的文档的词袋开始,用于生成朴素贝叶斯模型(常见,性能良好,此处为基线)-此链接http://sebastianraschka.com/Articles/2014_naive_bayes_1.html#naive-bayes-and-text -classification是对文档的一个很好的解释。
我还会尝试使用 Python gensim 之类的库,它允许您尝试其各种方法,您可以尝试该库的 Doc2Vec 方法。然后训练像 Log 这样的线性判别分类器。使用它提供给您的文档向量进行回归,并尝试查看其结果准确性是否优于朴素贝叶斯方法。
测试新文档是否与以前的文档相似的最简单方法是对它们进行散列并查找冲突。散列项目将它们放入“桶”中。如果两个项目在同一个“桶”中(又名,碰撞),它们是相似的。
通常,人们使用局部敏感散列(LSH)来进行文档相似性。
过程是:
- Shingling - 选择一个窗口大小并将窗口滑动到文档上
- MinHash - 多次计算文本带状疱疹的哈希值并选择最小值以减少数据大小
- LSH - 具有相同 MinHash 值的桶项目
或者,您可以计算散列文档之间的 Jaccard 相似度并选择相似度阈值。
该算法在《海量数据集挖掘》一书的第 3 章/“查找相似项”中有详细介绍。
其它你可能感兴趣的问题