2014-12-12
词袋模型:Bag-of-words model。
文档-词矩阵:Document-term matrix。
可以这样认为:由词袋模型可以生成文档-词矩阵。
举个维基百科的例子:
在一个预料库(corpus)中有两个文档:
文档1内容如下:
John likes to watch movies. Mary likes movies too.
文档2内容如下:
John also likes to watch football games.
从这个语料库中可以找到10个单词,对每个单词进行编号,可以得到如下的字典:
{
"John": 1,
"likes": 2,
"to": 3,
"watch": 4,
"movies": 5,
"also": 6,
"football": 7,
"games": 8,
"Mary": 9,
"too": 10
}
据此,可以将文档1转换成向量(下标从1开始):
V1 = [1, 2, 1, 1, 2, 0, 0, 0, 1, 1]
由于文档1中John
出现了1次,John
在字典中对应的值是1,所以V1[1] = 1
。由于文档1中to
出现了1次,to
在字典中对应的值是3,所以V1[3] = 1
。
同样的,可以将文档2转换成向量:
V2 = [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]
向量V1
和V2
可以构成文档-词矩阵M:
1, 2, 1, 1, 2, 0, 0, 0, 1, 1
1, 1, 1, 1, 0, 1, 1, 1, 0, 0
在M中,M[i][j]
代表在文档i中标号为j的单词的出现次数。
补充:
词袋模型不考虑词与词之间的先后顺序。
文档-词矩阵M中的值也可以由于0、1组成,1代表单词在文档中出现过,0代表没有出现过。
从语料库中构造字典,很多时候需要结合下面的技术:单词小写、词干提取、去除停止词,等等。