词频特征归一化

Word Frequency Feature Normalization

我正在提取文档的特征。其中一项功能是 the frequency of the word in the document。问题是训练集和测试集的句子数量不一定相同。所以,我需要以某种方式规范化它。一种可能性(我想到了)是将单词的出现频率除以文档中的句子数量。我的主管告诉我,最好以对数方式对其进行归一化。我不知道那是什么意思。谁能帮帮我?

提前致谢,

PS: 我也看到了this这个话题,但是对我没有帮助。

首先要问的问题是,你后面用的是什么算法?对于许多算法来说,对词向量袋进行归一化就足够了,这样它总和为一个或其他一些范数为一个。

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

我假设你的主管的建议意味着你不报告单词的计数,而是报告计数的对数。此外,我建议总体上查看 TF/IDF 度量。恕我直言,这在文本挖掘中更常见

'normalize it in a logarithmic way'大概就是简单的意思就是用log(frequency)代替frequency特征。

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

是的,有一种对数方式,叫做TF-IDF。

TF-IDF是词频和逆文档频率的乘积。

TF-IDF = (您在当前文档中出现的单词总数 ÷ 当前文档中的单词总数)* log(你的 collection 中的文档总数 ÷ 你的单词出现在你的 collection 中的文档的数量)

如果您使用 python,有一个名为 GENSIM 的不错的库,其中包含该算法,但您的数据 object 必须是来自 gensim.corpora 的字典。

你可以在这里找到一个例子:https://radimrehurek.com/gensim/models/tfidfmodel.html

tf-idf 帮助规范化 -> 使用 tf 和 tf-idf 参数检查结果,
dtm <- DocumentTermMatrix(语料库);dtm

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

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

<> Non-/sparse 个条目:24052/100812 稀疏度:81% 最大任期长度:22 加权:词频 - 逆文档频率 (归一化)(tf-idf)