学习笔记——BOW、TF-IDF 与 VSM

BOW

Bag-of-Words(BOW),又叫词袋模型,用于文档特征表示。

BOW 忽略文本的语法和语序,用一组无序的单词来表示这段文本。即 BOW 不会保留单词在句子里的顺序/位置信息。

示例

来自维基百科的例子

两个文档:

1
2
(1) John likes to watch movies. Mary likes movies too.
(2) John also likes to watch football games.

根据这两个文档,可以构建出词典:

1
2
3
4
5
6
7
8
9
10
11
12
[
"John",
"likes",
"to",
"watch",
"movies",
"also",
"football",
"games",
"Mary",
"too"
]

词典里有 10 个不同的词,所以可以将两个文档映射为 10 维的向量

1
2
(1) [1, 2, 1, 1, 2, 0, 0, 0, 1, 1] 
(2) [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]

每個向量的索引对应到词典中单词的出现次数。

TF-IDF

TF-IDF(term frequency–inverse document frequency)是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

词频(term frequency,tf)

\[tf_{i,j}=\frac{n_{i,j}}{\sum_kn_{k,j}}\] 其中,\(n_{i,j}\) 是词 \(t_i\) 在文档 $d_j $ 中出现的次数,分母代表该词在所有文档中出现的次数和

逆向文件频率(inverse document frequency,idf)

\[idf_i=\log\frac{|D|}{|\{j:t_i \in d_j\}|}\] 其中,\(|D|\) 为语料库里文档的总数,\(|\{j:t_i \in d_j\}|\) 为包含词 \(t_i\) 的文档数目

TF-IDF

\[tfidf_{i,j}=tf_{i,j}\times idf_i\]

VSM

Vector Space Model(VSM),即向量空间模型,使用一个向量表示一个文本。

在 QA 问题里也经常用到,例如

  • 文档 / KB / memory 用向量 \(d_j=(w_{1,j},...,w_{t,j})\) 表示
  • 查询 / 问题用 \(q_j=(w_{1,q},...,w_{t,q})\) 表示

每一维都代表一个词。如果某个词出现在了文档中,那它在向量中的值就非零。有几种常见方法计算这个值:

  • 0 / 1(0 代表这个词没有出现,1 代表这个词出现了)
  • 词频(见上面 tf 部分)
  • TF-IDF(见上面 TF-IDF 部分)

Reference

  1. Bag-of-words模型入门
  2. 维基百科:词袋模型
  3. 维基百科:tf-idf
  4. 维基百科:向量空间模型