在完成第二篇论《From Word Embeddings To Document Distances》文阅读之后,需要完成相应论文词数据的测试计算,另外这个文章中涉及线性规划的一部分内容,所以就趁着算法细节没有忘记,完成了相关算法的实现。由于年底很忙,这个简单的文档也拖了很久还没有写完,趁没有遗忙的时候赶紧记录下来,尽管很简单。
假设有三个句子,需要通过WMD来判断句子之间的相似度,具体三个句子分别为:
(1)sentence1: "Boys like eating apples"
(2)sentence2: "He wants some fruits"
(3)sentence3: "A boy speaks French"
为完成上述目标,具体的算法实现流程如图1所示。
![62cdfab7ae5a85cec1bae8da2cf93a26.png](https://img-blog.csdnimg.cn/img_convert/62cdfab7ae5a85cec1bae8da2cf93a26.png)
1、获取词embedding向量文件
为了完成每个单词的词向量特征提取,需要利用公共数据进行预训练,形成了embedding向量文件。目前英文文档中较常用的是斯坦福大学提供的Glove(Golobal Vectors for word Representation)词embedding文件,便于映射形成各个单词的多维度词向量,该文件包括了50维、100维、200维、300维等四种词向量维度。一般而言,维度越多,越能够表现出每个词之间的差异。上述embeeding向量文件,一般是读取之后用dictionary的方式进行存储。
常规英文对应embedding向量文件下载链接为:Global Vectors for Word Representation常规英文对应embedding向量文件下载链接为:
Global Vectors for Word Representationnlp.stanford.edu![6f381d56199263ca60c1b876d72ed429.png](https://img-blog.csdnimg.cn/img_convert/6f381d56199263ca60c1b876d72ed429.png)
2、 句子单词分析与nBow构建
由于英文单词跟中文单词有典型的差异,因此直接利用空格对单词进行分割,然后利用nBow进行统计,并计算每一个单词在该句子中的占比概率。
这个概率后面在进行句子间的比例计算时,需要用来衡量与之对应的那个新词对应的占比,是计算WMD最短距离的重要约束。
3、句子单词embedding向量预处理
参照embedding向量文件对应的dictionary,获取每一个单词对应的词向量。本文实验部分利用的是50维的词向量特征进行评估。例如单词boys与he对应的50维词向量为:
- boys: [-0.74203 0.6797 -0.56667 -1.1968 0.3358 0.29851 -0.70912 -0.14211 -0.40529 0.097625 -0.082705 -0.21598 -0.33956 -0.63261 0.54714 -0.32945 -0.037783 0.88213 -0.36467 -0.0061634 -0.39807 1.2246 0.66922 1.3295 -0.56906 -1.0283 -0.3655 -0.18287 -0.13597 -1.1708 2.2974 0.626 -0.015633 -0.32109 0.88654 0.4967 0.45373 -0.82939 0.28069 -0.92905 -0.60766 -0.74002 0.12943 0.2404 1.0691 -0.27271 0.29008 -1.2301 -0.091389 -0.2003 ]
- he: [-0.20092 -0.060271 -0.61766 -0.8444 0.5781 0.14671 -0.86098 0.6705 -0.86556 -0.18234 0.15856 0.45814 -1.0163 -0.35