文本向量化理论和实践教程

分享时@该用户已经被封, 我就能回答你的问题奥!

文章目录
  1. 1. 系列文章
  2. 2. 主要内容
  3. 3. 字的向量化
    1. 3.1. 基于拼音
    2. 3.2. 基于笔画
    3. 3.3. 基于其他词向量方法
  4. 4. 词向量化
    1. 4.1. one-hot稀疏表征
    2. 4.2. 词向量的分布(distributional)表示
      1. 4.2.1. 篇章/词频矩阵
      2. 4.2.2. TF-IDF权重
      3. 4.2.3. LSA潜在语义分析
    3. 4.3. 基于神经网络的词表示
  5. 5. 短文本向量化


系列文章

这个是系列博客, 所有文章链接都列在这里, 并持续更新中。

主要内容

文本向量化是指将文本表示成低维、稠密、实数向量的一种方法。随着深度学习技术的广泛应用,基于神经网络的文本向量化成为自然语言处理领域的研究热点,尤其是对单词的向量化研究。文本按照粒度大小将文本向量化划分为多个层次:

  • 字的向量化
  • 词的向量化
  • 句子/篇章向量化

这篇文章主要介绍这些向量化方法的理论知识, 而接下来的几篇文章会使用python程序来实践这些方法。

字的向量化

基于拼音

用拼音来表示字向量的方法我见的比较少, 也没有见过类似的研究, 我这里只是介绍一下这个方法, 但是并不能评价这个方法的好坏. 在一些英文语料的研究中见过一些研究者使用字母来形成词向量的, 因为总共有26个英文字母, 所以一个词/拼音可以表示为26维的字母频率向量, 这个我们后面用案例来详解。

基于笔画

中文的词都是由字构成的, 所以有一些研究人员更关心如何用向量来表示一个字, 比如<基于汉字固有属性的中文字向量方法研究>, 该方法结合中文汉字的构词和拼音属性,将中文汉字映射为一个仅32维的空间向量,最后使用卷积神经网络进行语义提取并进行相似性计算。实验结果表明,与现有的短文本相似性计算方法相比,该方法在算法性能及准确率上均有较大的提高。

基于其他词向量方法

字和词具有相似性, 所以很多适用于词向量化方法也适用于字向量, 但是为了保持和英文文献的一致性, 我们把这些方法放在词向量化部分来介绍。

词向量化

词是语义的基本单位, 所以绝大部分向量化的方法都是针对词的。

one-hot稀疏表征

该方法结合中文汉字的构词和拼音属性,将中文汉字映射为一个仅32维的空间向量,最后使用卷积神经网络进行语义提取并进行相似性计算。实验结果表明,与现有的短文本相似性计算方法相比,该方法在算法性能及准确率上均有较大的提高。这种方法很简单, 假如你的词库由3个词构成: 我 /爱/你, 那么你可以用维度为3的向量分别表示这三个词:

1
2
3
我 = [1 0 0]
爱 = [0 1 0]
你 = [0 0 1]

注意: One-hot的表征方式无法反映语义信息

词向量的分布(distributional)表示

如何刻画词与上下文之间的关系是区别各种分布表示方法的关键,下面将简单介绍词向量的分布表示方法。

篇章/词频矩阵

基于矩阵的分布表示通常又称为语义分布模型PU,该方法的主要思想是构建一个共现矩阵,矩阵的每行对应一个单词,每列表示一种上下文(通常是一篇文章),而每个元素的值为对应单词与上下文在语料库中的共现次数。因此,每个单词可由矩阵中对应的行向量表示,而任意两个单词的相似性可直接由它们向量的相似性衡量。

下面就是一个共现矩阵, 每一行就是一个词向量:







文档1文档2文档3
词1103
词210
词3100
.1343
TF-IDF权重

TF-IDF基于上面提到的共现矩阵。从实际操作角度来说, TF-IDF只是对共现矩阵进行了加权。

传统经典模型TF-IDF以及一些基于它改进的方法:主要思想是通过提取文本中词语的权重来标识句子, 使文本构成向量表达。权重主要由两部分组成, 即该词语在文本中的频率 (term frequency, TF) 与反文档频率 (inverse document frequency, IDF) 。它衡量了一个词的常见程度,TF-IDF的假设是:如果某个词或短语在一篇文章中出现的频率高,并且在其他文章中很少出,那么它很可能就反映了这篇文章的特性,因此要提高它的权值。然而这种方法太过于依赖词语的共现, 加上本身短文本消息就由很少的字组成, 往往实际应用中得不到很好的效果。因为两个文本消息可能没有共同的词语但也可以语义相关, 相反如果两个文本消息有一些共同的词语也不一定语义相关。如”富士苹果很好吃, 赶紧买”, “苹果六代真好用, 赶紧买”和”乔布斯逝世了”。

LSA潜在语义分析

基于共现矩阵的词向量表示一般具有很高的维度,且非常稀疏,导致其很难直接应用于各种自然语言处理任务中。使用降维技术可将其转换为相对低维、稠密的向量,并减少噪音影响。常用的降维技术有奇异值分解(SVD),非负矩阵分解(NMF),典型关联分析(CAA)和主成分分析(PCA)等。基于上述降维技术,学术界提出了很多生成词向量表示的具体方法,比如经典的LSA算法,其基本思想是使用SVD对"词-文档"矩阵分解,进而得到单词的低维向量表示。

基于神经网络的词表示

神经网络的词向量表示法是基于一个哲学: 词的上下文环境决定了词的意义, 所以在训练词向量的时候, 是通过词的上下文来计算词向量, 因而这样的词向量也具有了上下文的语义信息。

基于神经网络生成的词表示一般称为词向量、词嵌入(wordembeding),狭义上,与分布表示(distributional representation)相对,也称为分布式表示(distributed representation)。该表示将每一单词映射到一个低维、稠密的实数向量上,向量的每一维代表单词的潜在特征,且该特征能够捕捉到有用的语法和语义属性。词向量的最大优势在于我们可W相对快速、有效地根据向量间的距离(比如余弦距离)判断单词的相似性,原因在于语义或语法相似的单词拥有相似的向量表示。词向量的构建主要依赖于神经网络模垫,神经网络能够非常灵活地以线性组合方式表示任意n-gram词组,且参数以线性速度増长,相对于基于矩阵和聚类的分布表示,词向量能够捕捉到更多复杂、有用的语义信息。

基于神经网络的词嵌入也有很多不同的方法, 我们会在实操环节具体的解释。

短文本向量化

注意
本文由jupyter notebook转换而来, 您可以在这里下载notebook
有问题可以直接在下方留言
或者给我发邮件675495787[at]qq.com
请记住我的网址: mlln.cn 或者 jupyter.cn