我正在使用scikit-learn寻找文档的Tf-idf权重,然后使用朴素贝叶斯分类器对文本进行分类。但是,文档中所有单词的Tf-idf权重都是负数,除了一些例外。但就我所知,负值表示不重要的词语。那么,有必要将整个Tf-idf值传递给贝叶斯分类器吗?如果我们只需要传递其中的几个,该如何做?此外,与linearSVC相比,朴素贝叶斯分类器的表现更好还是更差?除了使用Tf-idf之外,是否有更好的方法来查找文本中的标签?
谢谢
谢谢
tfidf = term freq * log(document count / (document frequency + 1))
tfidf = [# of t in d] * log([#d in c] / ([#d with t in c] + 1))
在机器学习中,朴素贝叶斯和支持向量机(SVM)都是好的工具——它们的质量取决于应用场景,我曾经做过一些项目,它们的准确性相当。朴素贝叶斯通常很容易手动实现——在尝试使用SVM库之前,我建议先尝试一下这个。
也许我漏掉了什么,但我不太确定我完全知道您要找什么——非常乐意修改我的答案。
我也对这个主题很感兴趣。 当我使用贝叶斯分类(也许这篇俄语文章关于贝叶斯算法可以帮助你http://habrahabr.ru/blogs/python/120194/),我只使用文档中的前20个高频词。我尝试了很多值,但在我的实验中,前20个词获得了最佳结果。 此外,我将通常的tf-idf改为了以下内容:
def f(word):
idf = log10(0.5 / word.df)
if idf < 0:
idf = 0
return word.tf * idf