字频特征归一化

时间:2016-01-15 09:08:34

标签: machine-learning normalization text-mining feature-extraction word-frequency

我正在提取文档的功能。其中一项功能是the frequency of the word in the document。问题是训练集和测试集中的句子数量不一定相同。所以,我需要以某种方式对其进行标准化。一种可能性(我想到的)是将单词的频率除以文档中的句子数。我的主管告诉我,以对数方式对其进行标准化会更好。我不知道这是什么意思。任何人都可以帮助我吗?

提前致谢,

PS:我也看到了this主题,但它对我没有帮助。

4 个答案:

答案 0 :(得分:2)

要问的第一个问题是,您随后使用的算法是什么?对于许多算法来说,将词包向量归一化就足够了,因此它总和为一,或者其他一些规范就是一个。

然而,您应该按照句子数量进行标准化,而不是按文档中的单词总数进行标准化。例如,您的测试语料库可能会有更长的句子。

我认为你的主管的建议意味着你不报告单词的计数,而是报告计数的对数。此外,我建议一般调查TF / IDF措施。这在Textmining中更为常见

答案 1 :(得分:2)

'以对数方式对其进行标准化'可能只是意味着用log(频率)替换频率特征。

获取日志可能有用的一个原因是单词出现的Zipfian性质。

答案 2 :(得分:1)

是的,有一种对数方式,称为TF-IDF。

TF-IDF是术语频率和文档反转频率的乘积。

TF-IDF = (您在本文档中添加的单词总数÷本文档中的单词总数)* log(集合中文档总数÷单词出现在集合中的文档数量)

如果您使用python,则有一个名为GENSIM的漂亮库,其中包含该算法,但是您的数据对象必须是gensim.corpora中的Dictionary。

您可以在此处找到示例:https://radimrehurek.com/gensim/models/tfidfmodel.html

答案 3 :(得分:0)

tf-idf帮助标准化->使用tf和tf-idf参数检查结果,
 dtm <-DocumentTermMatrix(corpus); dtm

<> 非稀疏条目:27316/97548 稀疏度:78% 最长任期长度:22 加权:词频(tf)

dtm <-DocumentTermMatrix(corpus,control = list(weighting = weightTfIdf)); dtm

<> 非/稀疏条目:24052/100812 稀疏度:81% 最长任期长度:22 加权:术语频率-反向文档频率(标准化)(tf-idf)