目录
1 词袋模型基本概念
词袋模型(Bow,Bag of Words)不考虑文本中词与词之间的上下文关系,仅仅只考虑所有词的权重(与词在文本中出现的频率有关),类似于将所有词语装进一个袋子里,其中每个词的出现都是独立的,不依赖于其他词是否出现。这种模型的主要目的是将文本转换为一个向量,其中向量的每个维度代表一个词,而该维度的值则表示该词在文本中出现的频率。
词袋模型的主要特征是:每个词的出现都是独立的,相当于每次随机试验为随机从词表中抽取一个单词,进行n次独立重复试验,因此适合使用多项式朴素贝叶斯
2 词袋模型的表示方法
2.1 三大方法
1 独热表示法(One-Hot)
One-Hot表示法的数值计算规则为:词语序列中出现的词语的数值为1,词语序列中未出现的词语的数值为0。其数学表达式为:
2 词频表示法(Term Frequency, TF)
TF表示法的数值计算规则为:词语序列中出现的词语的数值为该词语在所在文本中的频次,词语序列中未出现的词语的数值为0。其数学表达式为:
其中,表示词语,表示词语在所在文本出现的次数。
3 词频-逆文档频率表示法(TF-IDF)
TF-IDF的核心思想是:
- 如果某个词语在文本中频繁出现,则认为该词语很重要
- 如果某个词语在文本中频繁出现,但该词语在每篇文档都出现,则认为该词语不是特别重要,比如“的”字每篇文章都出现,但是重要性不大
TF-IDF表示法的数值计算规则为:词语序列中出现的词语的数值为词语在所在文本中的频次乘以词语的逆文档频率,词语序列中未出现的词语的数值为0。其数学表达式为:
其中,表示词语,表示词语在所在文本出现的次数。
的计算公式为:
当分母越大,越小,则说明其越不重要,为了防止分母为0,对进行改进,如下:
2.2 例子
已知有下边的几篇英文文本,请分别用词袋模型的三种方法来向量化表示每篇文本。
文档ID | 文档词列表 |
---|---|
1 | Chinese Beijing Chinese |
2 | Chinese Chinese Shanghai |
3 | Chinese Macao |
4 | Tokyo Japan Chinese |
第一步:构建词袋
第二步:对于每一篇文本,计算词袋中各词语的数值,得到该篇文本的向量
One-Hot表示法
根据上述公式可得:
Beijing | Chinese | Japan | Macao | Shanghai | Tokyo | |
---|---|---|---|---|---|---|
Chinese Beijing Chinese | 1 | 1 | 0 | 0 | 0 | 0 |
Chinese Chinese Shanghai | 0 | 1 | 0 | 0 | 1 | 0 |
Chinese Macao | 0 | 1 | 0 | 1 | 0 | 0 |
Tokyo Japan Chinese | 0 | 1 | 1 | 0 | 0 | 1 |
词频表示法
根据上述公式可得:
Beijing | Chinese | Japan | Macao | Shanghai | Tokyo | |
---|---|---|---|---|---|---|
Chinese Beijing Chinese | 1 | 2 | 0 | 0 | 0 | 0 |
Chinese Chinese Shanghai | 0 | 2 | 0 | 0 | 1 | 0 |
Chinese Macao | 0 | 1 | 0 | 1 | 0 | 0 |
Tokyo Japan Chinese | 0 | 1 | 1 | 0 | 0 | 1 |
TF-IDF表示法
使用改进后的,如下:
计算过程如下:
因此有:
Beijing | Chinese | Japan | Macao | Shanghai | Tokyo | |
---|---|---|---|---|---|---|
Chinese Beijing Chinese | 1*1.916=1.916 | 2*1=2 | 0 | 0 | 0 | 0 |
Chinese Chinese Shanghai | 0 | 2*1=2 | 0 | 0 | 1*1.916=1.916 | 0 |
Chinese Macao | 0 | 1*1=1 | 0 | 1*1.916=1.916 | 0 | 0 |
Tokyo Japan Chinese | 0 | 1*1=1 | 1*1.916=1.916 | 0 | 0 | 1*1.916=1.916 |