文本表示方式
- 词袋模型(BOW,bag od words)
词袋模型假设我们不考虑文本中词与词之间的上下文关系,仅仅只考虑所有词的权重。而权重与词在文本中出现的频率有关。
举个例子,来说明词袋模型。假设语料库中只有两个句子。
Jane wants to go to Shenzhen.
Bob wants to go to Shanghai.
分词后,将所有词语装进一个袋子里,不考虑词法和语序的问题,即每个词语都是独立的。上面两个句子,就可以构成一个词袋。
[Bob,go, Jane, Shanghai, Shenzhen, to, wants]
那么生面两个句子可以表示为:
[0,1,1,0,1,2,1]
[1,1,0,1,0,2,1]
这两个词频向量就是词袋模型,可以明显看出语序关系已经完全丢失。
- TF-IDF
TF-IDF(x) = TF(x)*IDF(x)
其中:
TF(x)= N ( x ) N {N(x)\over N} NN(x)
IDF(x) = l g D D ( x ) lg{D\over D(x)} lgD(x)D
式中 N(x) 表示文本中词 x 出现的次数,N为文本中词的总数,
D表示文档所在类的总文档个数, D(x) 表示词x在多少个文档中出现。
IDF反应了一个词在所有文本中出现的频率,如果一个词在很多的文本中出现,那么它的IDF值应该低,比如“的”这样的词在所有文档中都有出现,那么其IDF值为0.
根据上面两种方法,实现文本向量化之后,就可以使用cosin距离、欧式距离等法法度量文本之间的距离,但是上述两个文本表示方法有明显的缺点,即在两个句子没有相同词语时,这两个句子通过上述方式向量化表示之后,会被认定为完全不相关,但他们可能具有相同的语义。
- Word2vec
google提出的word2vec能够将词语进行分布式表示,将词由one-hot的稀疏性编码方式转换为了稠密的编码方式。简单说就是将形如(0,0,0,1,0,0,…)的编码方式转变了形如(0.23,0.56,0.36,0.86,…)的编码方式。这样表示过后即便是两个不同的词语,也可以计算他们的相似度。
Word2Vec包含了两种词训练模型:CBOW模型和Skip-gram模型。
CBOW模型根据中心词W(t)周围的词来预测中心词
Skip-gram模型则根据中心词W(t)来预测周围词
CBOW的一般情形
1. 输入层:上下文单词的