人工智能必知必會(huì)-詞向量(案例)

學(xué)了好久的向量和矩陣,有小伙伴問(wèn)我祝旷,這xx玩意學(xué)著有啥用奥陌摹?能吃嗎怀跛?不能吃不學(xué)了距贷!
好好好,同學(xué)先別激動(dòng)吻谋。今天咱們就先不講理論忠蝗,講點(diǎn)有趣的工程落地,來(lái)滿足你的好奇心漓拾,讓你爽一下再繼續(xù)前行阁最!

本文中的代碼看不懂也沒(méi)關(guān)系,只需要看懂人話就行了晦攒!那正式開(kāi)始了闽撤!

beijing:china, tokyo:?

首先提出問(wèn)題,beijing和china的關(guān)系脯颜,相當(dāng)于tokyo和誰(shuí)的關(guān)系哟旗?
就算不進(jìn)行任何計(jì)算你也會(huì)脫口而出,是japan栋操。這背后的邏輯可以通過(guò)深度學(xué)習(xí)闸餐,被人工智能所掌握到!
這又和我們之前學(xué)的向量有啥關(guān)系呢矾芙?聽(tīng)我慢慢道來(lái)舍沙!

加載詞向量

import torch
import torchtext
from torchtext import vocab
gv = torchtext.vocab.GloVe(name='6B', dim=50)

我們加載預(yù)先訓(xùn)練好的Glove詞向量。簡(jiǎn)單說(shuō)就是有人已經(jīng)把每個(gè)英文單詞對(duì)應(yīng)成一個(gè)向量了剔宪。這個(gè)過(guò)程有興趣我以后再細(xì)節(jié)給你講拂铡,今天你只需要加載壹无,拿過(guò)來(lái)用就可以了。
保證你的網(wǎng)速和磁盤空間感帅,這個(gè)詞向量有點(diǎn)大862M

len(gv.vectors), gv.vectors.shape

輸出:

(400000, torch.Size([400000, 50]))

這意味著我們的詞向量里面包含了400000個(gè)詞斗锭,每個(gè)詞用50個(gè)維度來(lái)表示。

使用詞向量

假設(shè)我們要看tokyo這個(gè)詞的詞向量是多少失球,就可以這樣操作

gv.stoi['tokyo']

輸出:

1363

這個(gè)1363就是tokyo在gv詞向量中的索引岖是,接下來(lái)就可以

gv.vectors[1363]

輸出:

tensor([-0.3117,  0.1947,  0.1908,  0.6841,  0.2916, -0.8988,  0.2263,  0.1783,
        -1.4774, -0.0919,  0.0898, -0.9447, -0.1938,  0.5808,  0.2021,  0.9924,
        -1.0311,  0.4247, -1.1420,  0.7197,  2.1561, -0.1420, -0.9298, -0.2810,
        -0.0110, -1.6787,  0.4445,  0.5470, -0.7136, -0.6774,  2.3393,  0.2858,
         1.4062, -0.0078, -0.1528, -1.1147,  0.2415, -0.6591, -0.0449,  0.0468,
        -1.1396, -0.4484,  0.9181, -0.7405,  1.0508,  0.0527,  0.1343,  0.6226,
         0.6138, -0.0973])

什么的詞向量就長(zhǎng)成這個(gè)樣子!真丑~

你還可以通過(guò)itos把坐標(biāo)映射回單詞

gv.itos[1363]

輸出:

'tokyo'

近似詞

怎么衡量?jī)蓚€(gè)向量是否相似实苞,你還記得嗎豺撑?
對(duì),距離和角度都可以黔牵。我們今天就是用距離聪轿,如果兩個(gè)向量距離越小,代表他們約相似猾浦,對(duì)吧屹电。同樣,如果兩個(gè)詞向量見(jiàn)的距離越小跃巡,那就代表某種意義上,他們意義相近牧愁。

def get_wv(word):
    return gv.vectors[gv.stoi[word]]
get_wv('tokyo')

輸出:

tensor([-0.3117,  0.1947,  0.1908,  0.6841,  0.2916, -0.8988,  0.2263,  0.1783,
        -1.4774, -0.0919,  0.0898, -0.9447, -0.1938,  0.5808,  0.2021,  0.9924,
        -1.0311,  0.4247, -1.1420,  0.7197,  2.1561, -0.1420, -0.9298, -0.2810,
        -0.0110, -1.6787,  0.4445,  0.5470, -0.7136, -0.6774,  2.3393,  0.2858,
         1.4062, -0.0078, -0.1528, -1.1147,  0.2415, -0.6591, -0.0449,  0.0468,
        -1.1396, -0.4484,  0.9181, -0.7405,  1.0508,  0.0527,  0.1343,  0.6226,
         0.6138, -0.0973])

ok素邪,接下來(lái)我們就把tokyo轉(zhuǎn)化成詞向量,去遍歷所有的詞猪半,然后找到和它距離最近的10個(gè)

def sim_10(word, n=10):
    all_dists = [(gv.itos[i],  torch.dist(word, w) )for i, w in enumerate(gv.vectors)]
    return sorted(all_dists, key=lambda t: t[1])[:n]

sim_10(get_wv('tokyo'))

輸出:

[('tokyo', tensor(0.)),
 ('osaka', tensor(3.2893)),
 ('seoul', tensor(3.3802)),
 ('shanghai', tensor(3.6196)),
 ('japan', tensor(3.6599)),
 ('japanese', tensor(4.0788)),
 ('singapore', tensor(4.1160)),
 ('beijing', tensor(4.2423)),
 ('taipei', tensor(4.2454)),
 ('bangkok', tensor(4.2459))]

和我們預(yù)想的差不多兔朦,都是一些大都市。另外tokyo自然和tokyo本身距離最近為0磨确,所以第一個(gè)輸出的是tokyo沽甥。

w2 - w1 = w4 - w3

ok,最后的一步就是用這個(gè)暴力的數(shù)學(xué)公式解決問(wèn)題乏奥,他的意義就是china - beijing = ? - tokyo:
有了這個(gè)公式接下來(lái)就是一個(gè)向量加減操作了

def analogy(w1, w2, w3, n=5, filter_given=True):
    print('\n[%s : %s :: %s : ?]' % (w1, w2, w3))

    # w2 - w1 + w3 = w4
    closest_words = sim_10(get_wv(w2) - get_wv(w1) + get_wv(w3))

    # 過(guò)濾防止輸入?yún)?shù)出現(xiàn)在結(jié)果中
    if filter_given:
        closest_words = [t for t in closest_words if t[0] not in [w1, w2, w3]]
    print(closest_words[:2])
analogy('beijing', 'china', 'tokyo')

輸出:

[beijing : china :: tokyo : ?]
[('japan', tensor(2.7869)), ('japanese', tensor(3.6377))]

向量帶給你新的觀察世界的視角摆舟!

目錄:
人工智能必知必會(huì)-前言
人工智能必知必會(huì)-標(biāo)量,向量邓了,矩陣恨诱,張量
人工智能必知必會(huì)-向量的加減與縮放
人工智能必知必會(huì)-向量的內(nèi)積
人工智能必知必會(huì)-向量之間的距離
人工智能必知必會(huì)-初識(shí)矩陣
人工智能必知必會(huì)-矩陣與向量
人工智能必知必會(huì)-矩陣的加減法
人工智能必知必會(huì)-矩陣乘法
人工智能必知必會(huì)-矩陣與方程組
人工智能必知必會(huì)-再看矩陣與向量
人工智能必知必會(huì)-矩陣與向量乘法的物理意義
人工智能必知必會(huì)-詞向量(案例)
人工智能必知必會(huì)-矩陣相乘上

人工智能必知必會(huì)-矩陣相乘下

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市骗炉,隨后出現(xiàn)的幾起案子照宝,更是在濱河造成了極大的恐慌,老刑警劉巖句葵,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厕鹃,死亡現(xiàn)場(chǎng)離奇詭異兢仰,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)剂碴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門把将,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人汗茄,你說(shuō)我怎么就攤上這事秸弛。” “怎么了洪碳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵递览,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我瞳腌,道長(zhǎng)绞铃,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任嫂侍,我火速辦了婚禮儿捧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挑宠。我一直安慰自己菲盾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布各淀。 她就那樣靜靜地躺著懒鉴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碎浇。 梳的紋絲不亂的頭發(fā)上临谱,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音奴璃,去河邊找鬼悉默。 笑死,一個(gè)胖子當(dāng)著我的面吹牛苟穆,可吹牛的內(nèi)容都是我干的抄课。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鞭缭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼剖膳!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起岭辣,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吱晒,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后沦童,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體仑濒,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叹话,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了墩瞳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驼壶。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖喉酌,靈堂內(nèi)的尸體忽然破棺而出热凹,到底是詐尸還是另有隱情,我是刑警寧澤泪电,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布般妙,位于F島的核電站,受9級(jí)特大地震影響相速,放射性物質(zhì)發(fā)生泄漏碟渺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一突诬、第九天 我趴在偏房一處隱蔽的房頂上張望苫拍。 院中可真熱鬧,春花似錦旺隙、人聲如沸绒极。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)集峦。三九已至,卻和暖如春抠刺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摘昌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工速妖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聪黎。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓罕容,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親稿饰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子锦秒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353