NLP系列文章
NLP系列的文章旨在由浅入深的为大家介绍一系列与自然语言处理技术(NLP)相关的模型基础知识和原理。在本文中,将先为大家介绍NLP的的简单入门词向量模型-词袋模型。
词袋模型
词袋模型忽略掉文本的语法和语序等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的。此模型不考虑文本中词与词之间的上下文关系,仅仅只考虑所有词的权重,而权重与词在日志中出现的频率有关。
本章节以简单的日志数据为例,在词袋模型中,首先会进行分词,在分词之后,通过统计每个词在日志中出现的次数,我们就可以得到该日志基于词的特征,如果将日志的这些词与对应的词频放在一起,就是词的向量化。以下举例说明,
日志样本:
- cartservice in userId at app
- request cartservice in AddItem at app
将所有词语装进一个袋子里,不考虑其词法和语序的问题,即每个词语都是独立的。例如上面2条经过预处理的日志,就可以构成一个词袋,袋子里包括cartservice, in, userId, at, app, request, AddItem。假设建立如下数组(或词典)用于映射匹配:
[cartservice, in, userId, at, app, request, AddItem]
那么上面两条日志就可以用以下两个向量表示,对应的下标与映射数组的下标相匹配,其值为该词语在日志中出现的次数
[1,1,1,1,1,0,0]
[1,1,0,1,1,1,1]
这两个向量即为词向量,词袋模型由若干条词向量组成。但在词袋模型中,词向量并不包含语义信息与上下文信息,因此语序关系在此模型中有丢失。也就是说,词袋模型在创新性的提出一种将自然语言格式的语料数据向量化的同时,模型本身也带有较为明显的缺点。