? ? ? 前兩天教研室老師給我布置了一個(gè)任務(wù)捂敌,試跑一下word2vec轰胁,作為一個(gè)小白我通過(guò)幾天的不斷嘗試和摸索,算是成功的跑出來(lái)了掉盅。
? ? ? 先來(lái)介紹一下嘱朽,word2vec是谷歌在2013年開(kāi)源的一個(gè)工具,核心思想是將詞表征映射為對(duì)應(yīng)的實(shí)數(shù)向量怔接。項(xiàng)目鏈接https://code.google.com/archive/p/word2vec
快速入門
1.我先從谷歌官網(wǎng)通過(guò)export to github下載了項(xiàng)目源碼搪泳;
2.運(yùn)行make編譯word2vec工具,由于我是小白一枚扼脐,并不知道m(xù)ake這個(gè)工具岸军,一開(kāi)始想直接運(yùn)行makefile結(jié)果當(dāng)然失敗奋刽,折騰了一會(huì),谷歌一下才發(fā)現(xiàn)正確的打開(kāi)方式艰赞。在這其中還遇到了一個(gè)小問(wèn)題佣谐,編譯的過(guò)程中報(bào)錯(cuò),提示找不到<malloc.h>這個(gè)頭文件方妖,在網(wǎng)上查找之后狭魂,在項(xiàng)目的git下的討論中找到了問(wèn)題的解決方法,只要<malloc.h>換成<sys/malloc.h>就可以了党觅。
3.編譯完成后就可以運(yùn)行腳本:./demo-word.sh這個(gè)腳本主要是從http://mattmahoney.net/dc/text8.zip下載了一個(gè)文件text8(為了方便我先下載好放在目錄中)然后使用text8進(jìn)行訓(xùn)練雌澄,最后執(zhí)行訓(xùn)練生成的vectors.bin文件。另外一個(gè)腳本./demo-phrases.sh則是下載另一個(gè)英文語(yǔ)料包杯瞻,對(duì)短語(yǔ)進(jìn)行訓(xùn)練镐牺。
中文語(yǔ)庫(kù)嘗試
試完了英文的當(dāng)然要來(lái)試試中文的,中文的比英文的也要復(fù)雜許多魁莉,主要是還要進(jìn)行分詞處理睬涧。在嘗試過(guò)程中我把維基的中文語(yǔ)料庫(kù)和搜狗的語(yǔ)料庫(kù)都下載下來(lái)了,在分詞工具的選擇上也嘗試了兩種ansj-seg和結(jié)巴分詞旗唁。由于ansj-seg要用到eclipse畦浓,而對(duì)于eclipse的使用并不太熟悉,于是放棄了轉(zhuǎn)而使用結(jié)巴分詞检疫。
在語(yǔ)料庫(kù)方面宅粥,在電腦跑了4個(gè)多G的搜狗預(yù)料文件無(wú)果后轉(zhuǎn)而下了一個(gè)幾百兆的中文語(yǔ)料庫(kù),SogouR.txt,而且里面的詞幾乎都是分好的电谣,只是兩兩用“-”連在一起秽梅,只需要把“-”替換成空格就可以用于訓(xùn)練了。于是利用命令
nohup ./word2vec -train SogouR.txt -output vectors-ch.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1 &
就能夠進(jìn)行中文訓(xùn)練剿牺,并生成vectors-ch.bin文件
./distance vectors-ch.bin
運(yùn)行文件可得