我正在提取文档的功能。其中一项功能是the frequency of the word in the document
。问题是训练集和测试集中的句子数量不一定相同。所以,我需要以某种方式对其进行标准化。一种可能性(我想到的)是将单词的频率除以文档中的句子数。我的主管告诉我,以对数方式对其进行标准化会更好。我不知道这是什么意思。任何人都可以帮助我吗?
提前致谢,
PS:我也看到了this主题,但它对我没有帮助。
答案 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)