不可思议的Word2Vec之系列四

  • 时间:
  • 浏览:1

前面可能说了,同类度的定义事实上要看场景的,余弦同类度不多其中之一。我希望我们歌词 我们歌词 会真是“东莞”和“广州”压根就没联系,对于“老广州”来说,“白云山”、“白云机场”、“广州塔”那此词才是跟“广州”最同类的,一种场景也是很常见的,比如做旅游的推荐,旅游来到广州后,自然是希望输入“广州”后,自动输出来“白云山”、“白云机场”、“广州塔”那此广州相关的词语,而也有输出“东莞”、“深圳”那此词语。

相对来说,后面 一种结果更加可读后来 。另外的后来 结果,展示如下:

cos(x,y)=xy|x|×|y|cos⁡(x,y)=x⋅y|x|×|y|

当用Word2Vec得到词向量后,一般我们歌词 我们歌词 会用余弦同类度来比较另另1个词的同类程度,定义为

>>> pd.Series(w)

0 (福中路, -17.390365773)

1 (OHG, -17.4582544641)

2 (林寨镇, -17.6119545612)

3 (坪山街道, -17.6462214199)

4 (东圃镇, -17.6648893759)

5 (西翼, -17.6796614955)

6 (北京西, -17.6898282385)

7 (⇋, -17.6960 761384)

8 (K1019, -17.7259853233)

9 (景泰街道, -17.7292421556)

10 (PSW3, -17.7296432222)

11 (广州铁路职业技术学院, -17.732288911)

12 (13A06, -17.7382891287)

13 (5872, -17.7404719442)

14 (13816217517, -17.7660 583156)

15 (未遂案, -17.7713452536)

16 (增城市, -17.7713832873)

17 (第十甫路, -17.7727940473)

18 (广州白云机场, -17.7897457043)

19 (Faust, -17.7956389314)

20 (国家档案馆, -17.7971039916)

21 (w0766fc, -17.60 51687721)

22 (K1020, -17.8106548248)

23 (陈宝琛, -17.8427718407)

24 (jinriGD, -17.86478260 23)

25 (360 211410960 031646, -17.8729896156)

回到本文的主题来,同类度为什么在么在会么会定义呢?答案是:看场景定义所都要的同类。

>>> pd.Series(model.most_similar(s))

0 (东莞, 0.840889960 725)

1 (深圳, 0.799216389656)

2 (佛山, 0.786817014217)

3 (惠州, 0.779960 155487)

4 (珠海, 0.735232532024)

5 (厦门, 0.7260 90026855)

6 (武汉, 0.7241224060 52)

7 (汕头, 0.71960 2525234)

8 (增城, 0.713532149792)

9 (上海, 0.710560 560 226)

我们歌词 我们歌词 可不可以 另一方尝试。要说明的是:很遗憾,Huffman Softmax真是在训练阶段加速计算,但在预测阶段,当都要遍历一遍词典时,事实上它比原生的Softmax都要慢,不多这并也有另另1个高时延的方案。

>>> s = u'广州'

>>> s = u'飞机'

>>> w = relative_words(s)

>>> pd.Series(w)

0 (澳门国际机场, -16.560 2216186)

1 (HawkT1, -16.60 55740672)

2 (架飞机, -16.610560 944)

3 (地勤人员, -16.6764712234)

4 (美陆军, -16.6781627384)

5 (SU60 , -16.6842796275)

6 (起降, -16.6910345896)

7 (上海浦东国际机场, -16.7040362134)

8 (备降, -16.723260 9719)

9 (第一架, -16.760 4077856)

这后来,“广州”的相关词为

>>> w = relative_words(s)

>>> s = u'广州'

可不可以 发现,得到的结果基本上也有跟广州紧密相关的。当然,我希望我们歌词 我们歌词 稍微强调一下高频词,我希望,可不可以 考虑将互信息公式修改为

总而言之,都要明确另一方的需求,我希望再考虑对应的法子。

logp(x,y)p(x)p(y)=logp(y|x)logp(y)log⁡p(x,y)p(x)p(y)=log⁡p(y|x)−log⁡p(y)

是另另1个略小于1的常数。可能取

>>> s = u'自行车'

>>> w = relative_words(s)

>>> pd.Series(w)

0 (骑, -16.4410312554)

1 (放风筝, -16.660 7225423)

2 (助力车, -16.8390451582)

3 (自行车, -16.900188791)

4 (三轮车, -17.1053629907)

5 (租赁点, -17.159938960 5)

6 (电动车, -17.2038996636)

7 (助动车, -17.2523149342)

8 (多辆, -17.2629832083)

9 (CRV, -17.28564260 14)

互信息越大,说明

等等!我们歌词 我们歌词 调慢给出了同类度的计算公式,原先我们歌词 我们歌词 居然还那末 “定义”同类!连同类都那末 定义,为什么在么在会么会就得到了评估同类度的数学公式了呢?

另另1个词时不时 同时时不时 出现。

>>> w = relative_words(s)

logp(x,y)p(x)pα(y)=logp(y|x)αlogp(y)log⁡p(x,y)p(x)pα(y)=log⁡p(y|x)−αlog⁡p(y)

那末 ,通过余弦同类度给出的同类,又是那此具体情况呢?事实上,Word2Vec本质上来说,还是使用上下文的平均分布描述当前词(可能Word2Vec是不考虑词序的),而余弦值与向量模长没关系,我希望它描述的是“相对一致”。那末 ,余弦同类度大,事实上意味这另另1个词时不时 跟同一批词搭配,可能更粗糙讲,那不多在同一段话中,另另1个词具有可替换性。比如,“广州”最相近的词语是“东莞”、“深圳”,那是可能不多场景下,直接将矩阵中的“广州”直接加带“东莞”、“深圳”,一种一段话还是合理的(是一段话一种的合理,但一种一段话不一定是事实,比如“广州是广东的省会”,变成“东莞是广东的省会”,一种一段话是合理的,我希望一种一段话暂且是事实)。

>>> s = u'广州'

进而可不可以 用各种法子对它建模。

要注意,这也有另另1个可不可以 随意忽略的难题。不多后来我们歌词 我们歌词 别问我我们歌词 我们歌词 干的是那此,就直接去干了。好比上一篇文章说到提取关键词,相信不多人都未曾想过,那此是关键词,难道就仅仅说关键词不多很“关键”的词?而可能想到,关键词不多用来估计文章相当于讲那此的,原先我们歌词 我们歌词 就得到一种很自然的关键词定义

>>> pd.Series(model.most_similar(s))

0 (摩托车, 0.737690329552)

1 (骑, 0.721182465553)

2 (滑板车, 0.7102201581)

3 (电动车, 0.700758457184)

4 (山地车, 0.687260 654907)

5 (骑行, 0.6665760 74196)

6 (单车, 0.651858925819)

7 (骑单车, 0.660 20760 322)

8 (助力车, 0.635745406151)

9 (三轮车, 0.660 989760 358)

比如,在做多义词的词义推断时,比如star是“恒星”还是“明星”,就可不可以 利用互信息。我们歌词 我们歌词 可不可以 后来找到star意思为“恒星”的后来的语料,找出与star互信息比较大的的词语,那此词语可能有sun、planet、earth,同类地,可不可以 找到star为“明星”的后来的语料,找出与star互信息比较大的词语,那此词语可能有entertainment、movie等。到了新的语境,我们歌词 我们歌词 就可不可以 根据上下文,来推断究竟是哪个词义。

根据前面两每种,我们歌词 我们歌词 可不可以 想看 ,“同类”一般有一种情景:1、时不时 跟同一批词语搭配时不时 出现;2、时不时 同时时不时 出现。这一 种情景,我们歌词 我们歌词 可不可以 认为是词语之间的同类,适用于不同的需求。

keywords=argmaxwsp(s|w)keywords=arg⁡maxw∈s⁡p(s|w)

结果重新排列如下:

,那末 有

>>> pd.Series(model.most_similar(s))

0 (起飞, 0.771412968636)

1 (客机, 0.758365988731)

2 (直升机, 0.755871891975)

3 (一架, 0.749522089958)

4 (起降, 0.726713418961)

5 (降落, 0.72360 4390907)

6 (架飞机, 0.722024559975)

7 (飞行, 0.700125515461)

8 (波音, 0.697083711624)

9 (喷气式飞机, 0.6968660 35461)

一种“同类”,准确来说是“相关”,应该为什么在么在会么会描述呢?答案是互信息,定义为

其中

有了一种同类度概念,我们歌词 我们歌词 既可不可以 比较任意另另1个词之间的同类度,也可不可以 找出跟给定词最相近的词语。这在gensim的Word2Vec中,由most_similar函数实现。

原先,在给定词xx的具体情况下,我们歌词 我们歌词 就可不可以 找出时不时 跟词xx同时时不时 出现的词,一种也删改可不可以 由Word2Vec中的Skip-Gram+Huffman Softmax模型来完成。代码如下

>>> pd.Series(w)

0 (福中路, -16.83429760 99)

1 (北京西, -16.93160 53191)

2 (OHG, -16.9532688634)

3 (西翼, -17.0521852934)

4 (增城市, -17.0523156839)

5 (广州白云机场, -17.0557270208)

6 (林寨镇, -17.0867272184)

7 (⇋, -17.1061883426)

8 (坪山街道, -17.1485460 457)

9 (5872, -17.1627067119)

10 (东圃镇, -17.19260 594)

11 (PSW3, -17.2013228493)

12 (Faust, -17.2178736991)

13 (红粉, -17.2191157626)

14 (国家档案馆, -17.2218467278)

15 (未遂案, -17.2220391092)

16 (景泰街道, -17.2336594498)

17 (光孝寺, -17.2781121397)

18 (国际货运代理, -17.2810157155)

19 (第十甫路, -17.2837591345)

20 (广州铁路职业技术学院, -17.2953441257)

21 (芳村, -17.60 1106775)

22 (检测院, -17.60 41253252)

23 (K1019, -17.60 85465963)

24 (陈宝琛, -17.3134413583)

25 (林和西, -17.360 577006)