浅入浅出:PageRank算法 使用 TextRank 算法为文本生成关键字和摘要 基于物品的协同过滤 如何使用MapReduce实现基于物品的协同过滤(1) 如何使用MapReduce实现基于物品的协同过滤(2) 浅入浅出:K近邻算法 使用mahout下的朴素贝叶斯分类器对新闻分类 使用Affinity Propagation进行聚类 K-medoids聚类 矩阵分解在推荐系统中的应用:NMF和经典SVD实战 使用特征递归消除筛选特征 如何分配权重 比较NMF、PCA和VQ 方差和协方差 基于SVD的协同过滤 逻辑斯谛回归代码实现 隐语义模型和NMF(非负矩阵分解) 使用PCA处理MNIST数据集 使用GBDT选取特征 基于贝叶斯的文本分类系统的数据库设计 在hadoop1.2.1上安装mahout 0.9 Hadoop 2.4 实现Kmeans聚类算法 在Iris数据集上对比PCA、LDA、NMF 基于贝叶斯的文本分类实战 单层决策树 Logistic regression(逻辑斯蒂回归) 基于用户的协同过滤 词袋模型与文档-词矩阵 如何实现拼音与汉字的互相转换 梯度下降法 如何判定相似度 MovieLens数据集介绍 基于KNN的文本分类实战 Jasper文本分类系列博客阅读摘录 使用 Mean Shift进行聚类 朴素贝叶斯的三个常用模型:高斯、多项式、伯努利 使用决策树处理iris数据集 浅入浅出:从Kmeans到Kmeans++ 如何持久化scikit-learn中训练好的模型 浅入浅出:DBSCAN聚类算法(1) 浅入浅出:DBSCAN聚类算法(2) 2015阿里移动推荐算法比赛第一赛季总结 爬山算法 使用朴素贝叶斯分类器划分邮件 层次聚类 基于MapReduce的频繁项集挖掘 搜狗实体关系提取比赛

词袋模型与文档-词矩阵


#机器学习


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]

向量V1V2可以构成文档-词矩阵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代表没有出现过。

从语料库中构造字典,很多时候需要结合下面的技术:单词小写、词干提取、去除停止词,等等。



( 本文完 )