文本向量化

一、简介

二、分类

1.one-hot(将词向量化)
  • (1).要点
    1).每个词的维度大小等于词典的维度
    2).每个词一个向量,一篇文章为一个矩阵

这最简单的一种想法,就是对一句话用one-hot编码:比如对于这句话:

ohn likes to watch movies,Mary likes too.
John likes to watch movies,Mary likes too.
John also likes to watch football games.
John also likes to watch football games.

可以通过以上语料构建一个字典:dic

1:"John"
2:"likes"
3:"to"
4:"watch"
5:"movies"
6:"also"
7:"football"
8:"games"
9:"Mary"
10:"too"

用one-hot可以表示为:
第一句话:
John :[1,0,0,0,0,0,0,0,0,0]
likes :[0,1,0,0,0,0,0,0,0,0]

too :[0,0,0,0,0,0,0,0,0,1]

第二句话:
John :[1,0,0,0,0,0,0,0,0,0]
likes :[0,1,0,0,0,0,0,0,0,0]

too :[0,0,0,0,0,0,0,0,0,1]

  • (2)缺点:
    但事实是,这样做耗费的资源太多,而且不能很好的表征每句话的特性。
2.BOW:Bag-of-words(将句子向量化)
  • (1)要点
    1).一篇文章一个向量,向量的维度的长度和词典一样

另一种方法则是词袋模型,它相当于一个词袋,不考虑词/句之间的相关性,只要出现了该词,就会记为1,再次出现就会+1。比如前面的那句话:

John likes to watch movies,Mary likes too.

可以表示为
[1,2,1,1,1,0,0,0,1,1]

与其相似的是binary weighting,它就是看一下每个词是否出现,出现记为1,没出现记为0
[1,1,1,1,1,0,0,0,1,1]

  • (2)优点

  • (3)缺点:
    1).只考虑了词的数量,没有考虑词的重要性(篇章的长度:tf,语料的关系:idf)
    2).没有考虑词的顺序

3.TF-IDF(将句子向量化:考虑词的重要性)

因此,就有tf-idf解决这个问题,它的主要思路就是有两方面:
A—第一就是如果这个词在我们当前文档出现的频率非常高,说明它在当前文档应该是比较重要的。
B-但如果它在所有的文档中出现的频次都非常好,大家可能就会觉得这个词应该不是那么重要的。

比如中文的“的“,或者我们上面那两个句子中的to.
因此,tf-idf就是一个在当前文档和所有文档中权衡他们的重要性,然后计算出每个词的重要度的方法。

  • (2)优点
    1).考虑了词的权重,与其他文档的关联性
  • (3)缺点:
    1).没有考虑词的顺序
4.word2vec(词的维度固定)

你可能感兴趣的:(人工智能)