使用语言模型进行术语加权

时间:2015-11-24 17:15:32

标签: python machine-learning scikit-learn n-gram text-classification

我知道scikit使用Vectorizer支持n-gram。但那些只是字符串。我想使用统计语言模型(https://en.wikipedia.org/wiki/Language_model),如下所示:http://www.nltk.org/_modules/nltk/model/ngram.html

所以,我想要的是一个使用概率作为术语权重的Vectorizer,而不是让我们说tf-idf或只是一个令牌计数。有没有理由为scikit不支持这个?我对语言建模相对缺乏经验,所以我不确定这种方法对于文本分类是不是一个好主意。

1 个答案:

答案 0 :(得分:1)

这取决于术语的含义。如果 - 像往常一样 - 术语只是一个单词,那么概率模型的工作方式与......简单的加权(即使没有idf!)相同。为什么?因为P(word)的经验估计只是# word / # all_words,而# all_words是常数,那么权重就变为#word,这很简单术语频率 。所以在这个意义上,scikit会做你需要的。

好的,所以也许你想考虑一下背景?那是什么样的背景?您想要独立分析P(pre-word1, word)并将其用作word的加权和吗?那为什么不P(word, post-word1)?为什么不P(pre-word2, pre-word1, word, post-word1, post-word2)等?当没有bigrams时,为什么不包括一些基于unigrams的重量?答案非常简单,一旦你开始使用语言模型作为加权方案,可能引入的数量会逐渐增加,并且没有#34;典型的"方法,值得实施作为标准"对于不是NLP库的库。