【Python机器学习】词向量推理——语义查询与类比
词向量是对词语义或含义的数值向量表示,包括字面意思和隐含意义。词向量可以捕捉到词的内涵,比如“peopleness”(人)、“animalness”(动物)、(thingness)(存在)等。将所有这些含义结合起来构成一个稠密(没有零值)的浮点数向量。这个稠密向量支持查询和逻辑推理。
下面一句描述Marie Curie的句子:“she invented something to do with physics in Europe in the early 20th century.”
使用词向量,可以将“women”、“Europe”、“physics”等词的含义组合起来搜索词或名字,搜索结果会更接近要查找的“Marie Curie”。所要做的只是把这些词向量加起来:
answer_vector=wv['women']+wv['Europe']+wv['physics']+wv['scientist']
从词向量中去除性别偏向,并使用该词向量计算结果:
answer_vector=wv['women']+wv['Europe']+wv['physics']+wv['scientist']-mv['male']-2*wv['man']
通过词向量,我们可以从“women”中去掉“man”。
类比问题
如果把问题重新表述成一个类别问题,就像下面这样:
Who is to nuclear physics what Louis Pasteur is to germ?
对于这种问题,大部分搜索引擎都没有办法。但是有了词向量,解决办法就会很简单,只需要从“Louis Pasteur”中去除“germs”,然后加上“physics”:
answer_vector=wv['Louis Pasteur']-mv['germs']+mv['physics']
如果对那些不相关领域中人物之间的更复杂的类比感兴趣,如音乐家和科学家,也可以这样做:
Who is the Marie Curie of music?
或者
Marie Curie is to science as who is to music?
对于使用词向量的数学运算来解决这些问题。有时可以用正式的数学符号表示,如下:
MARIE CURIE : SCIENCE :: ? : MUSIC
这样就更容易猜出对应的词向量数学运算,下面是一种表示:
mv['Marie_Curie']-mv['science']+mv['music']
除了人和职业,还可以回答一些类似的问题,比如运动队或城市:
The Timbers are to Portland as what is to Seattle?
在标准化考试中这个问题的表示如下:
TIMBERS : PORTLAND :: ? : SEATTLE
不过更普遍的情况是,在标准化考试中用的是英语词汇表中的词:
WALK :LEGS :: ? : MOUTH
或者
ANALOGY : WORDS :: ? :: NUMBERS
这些对词向量来说都很简单。有了词向量,NLP就可以解决这些问题。
词向量可以回答这些模糊的问题并解决类比问题。只要答案的词向量在词向量的词汇表中,词向量就能记住这些词语名字。即使对那些无法搜索查询或类比形式提出的问题,词向量也能提供有效的解决方案。