当前位置:   article > 正文

文本表示(one-hot独热编码&分布式表示)_文本分布式表示的方法.ppt

文本分布式表示的方法.ppt

文本表示的概念

文本表示是用用计算机对自然语言(这里特定指文本)进行处理,处理后的结果做到能够为计算机所识别,直接运用,直接计算,例如用于计算文本之间的预先相似度或者字面相似度。

备注:

  • 本质是将文本表示为向量,而且每一个维度都表示一个特征

  • 这里的特征可以理解为单词出现的频数,或者是单词出现的位置。(亦或是有其他的相同点也可以作为特征)

one-hot向量

概念:one-hot向量,即为用一个词表大小确定的向量去表示一个词,(词表的向量为V,词表的长度为)将词表中的第i个词语表示为向量。而且该词表的第i个词语在第i维设置为1,其他维度均为0

具体如图所示。

缺点

  • 处理语义相似的词语的时候效果较差,比如美好和美丽的余弦相似度为0。对数据处理的时候未能考虑到语义相似度。

  • 出现数据稀疏性(Data Sparsity)问题。(向量中容易出现几乎都是0的情况)

解决

引入一些其他的特征,比如引入WordNet语义特点的同义词的特征(共同语义信息),缓解one-hot编码中的缺点。

分布式表示

分布式表示即为通过分布式语义假设(运用上下文词语分布去表示一个词语的意思),而且确定好分词之后我们就可以构建词语共线频次表。(两个词语在同一行出现的频次,而且默认对角线为0),下面我们利用这个表格进行优化分布式表示。具体如图所示。(在后续的计算PMI有用到)

分布式表示缺点

  • 高频无关词语提高了相似度。在构建向量的时候可能会影响词义的计算。

  • 无法通过推导得到另外的关系,术语为共线频次无法反映词语之间的高阶关系。(A与B共线,B与C共线,无法判断A与C共线关系)

解决

点互信息(Pointwise Mutual Information)(PMI)去缓解高频词语对于词的向量效果构建影响。(通过对高的词语赋予低权重,对出现次数少的词语赋予高权重),而且运用(PMI/PPMI)去衡量词语的权重信息,公式以及推导如图所示。

备注:PMI更好的保留了特征,减少了其他高频词影响。

备注p(w,c)是w和c共现的频率,p(w)和p(c)是w出现的概率和c出现的概率。

为了方便python计算数据,我们运用了极大似然估计(MLE)去计算相关的概率值。具体公式如下。相关的数据介绍也如图所示。这里的图指的是上文所提及的词语共线频次表,而且为矩阵。

为了缓解词语出现共线次数较低从而导致PMI出现负值,我们通常采用PPMI去计算。

备注:PPMI只是将计算结果跟0(极小值)做对比,如果为小于极小值,就设置为极小值。

具体公式如下。目的是保证PPMI大于等于0

代码

  1. import numpy as np
  2. # 这里的M是一个(V,C)的矩阵,而且V为词表大小,C为全部上下文,Mij为词Wi在上下文Cj中共线的次数
  3. M = np.array([
  4. [0, 2, 1, 1, 1, 1, 1, 2, 1, 3],
  5. [2, 0, 1, 1, 1, 0, 0, 1, 1, 2],
  6. [1, 1, 0, 1, 1, 0, 0, 0, 0, 1],
  7. [1, 1, 1, 0, 1, 0, 0, 0, 0, 1],
  8. [1, 1, 1, 1, 0, 0, 0, 0, 0, 1],
  9. [1, 0, 0, 0, 0, 0, 1, 1, 0, 1],
  10. [1, 0, 0, 0, 0, 1, 0, 1, 0, 1],
  11. [2, 1, 0, 0, 0, 1, 1, 0, 1, 1],
  12. [1, 1, 0, 0, 0, 0, 0, 1, 0, 1],
  13. [3, 2, 1, 1, 1, 1, 1, 2, 1, 0]])
  14. def pmi(M, positive=True):
  15. col_totals = M.sum(axis=0) # 按列求和
  16. row_totals = M.sum(axis=1) # 按行求和
  17. total = col_totals.sum() # 总频数
  18. excepted = np.outer(row_totals, col_totals) / total # 获得每个元素的分子
  19. M = M / excepted
  20. with np.errstate(divide='ignore'):# 不显示log(0)的警告
  21. M = np.log(M)
  22. M[np.isinf(M)] = 0.0 # 将log(0) 放置为0
  23. if positive:
  24. M[M < 0] = 0.0
  25. return M
  26. M_pmi = pmi(M)
  27. np.set_printoptions(precision=2)
  28. print(M_pmi)

此外,TF-IDF也可以实现环境多频次词语的影响。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/350361
推荐阅读
相关标签
  

闽ICP备14008679号