使用gensim訓(xùn)練維基百科中文語料wordvec模型

由于最近在研究旅游評論的極性情感分析,想利用深度學(xué)習(xí)的方式來訓(xùn)練一個情感分類模型,苦于沒有高質(zhì)量的語料庫,訓(xùn)練的模型準確率不高。于是決定自己基于維基百科語料訓(xùn)練一個wordvec2 模型,為下一步的研究工作做準備。

1、語料的下載

下載地址,下載大小大概有1.5G,里面的內(nèi)容以為xml格式保存。

2、數(shù)據(jù)的處理

1、去除原始的數(shù)據(jù)是包含了各種xml標簽,使用網(wǎng)上開源處理程序提取文本數(shù)據(jù)Wikipedia Extractor

#下載程序
git clone https://github.com/attardi/wikiextractor.git wikiextractor
#cd 到程序目錄
cd wikiextractor
#安裝程序
python setup.py install
#提取文章
python WikiExtractor.py -b 100M -o extracted /Users/yj/Desktop/學(xué)習(xí)/情感分析/wikiCorpus/wiki/zhwiki-latest-pages-articles.xml.bz2

說明 -b 后面參數(shù)為提取文件的大小,我這里設(shè)置為100M,不要設(shè)置太大不然后面的語料處理時間太長,-o extracted 后面為下載好的語料所在路徑,注意替換。
我的電腦跑了一個多小時。


num.png

跑完后就能看到處理好的語料

wikicorpus.png

2、將繁體轉(zhuǎn)為簡體
使用開源工具opencc將繁體抓我簡體,安裝命令

brew install opencc

使用opencc進行轉(zhuǎn)換,轉(zhuǎn)換命令如下

opencc -i wiki_00 -o zh_wiki_00 -c t2s.json

-i后面的參數(shù)為原始語料路徑,-o后面的參數(shù)為輸出路徑
通過轉(zhuǎn)換后格式如下

<doc id="5323477" url="https://zh.wikipedia.org/wiki?curid=5323477" title="海洋學(xué)">
海洋學(xué)  海洋學(xué)()是研究海洋的自然現(xiàn)象、性質(zhì)及其變化規(guī)律,以及開發(fā)****
</doc>

我們需要提取<doc></doc>之間的內(nèi)容
3、去除一些特殊符號,如()、{、}、,

                line = line.replace('(','')
                line = line.replace(')','')
                line = line.replace('{','')
                line = line.replace('}','')
                line = line.replace('[','')
                line = line.replace(']','')
                line = line.replace('《','')
                line = line.replace('》','')
                line = line.replace('「','')
                line = line.replace('」','')
                line = line.replace('『','')
                line = line.replace('』','')
                line = line.replace('“','')
                line = line.replace('”','')
                line = line.replace('(','')
                line = line.replace(')','')

3、使用jieba中文切詞工具進行切詞

經(jīng)過處理后的數(shù)據(jù)如下面的格式

海洋學(xué)  海洋學(xué)()是研究海洋的自然現(xiàn)象、性質(zhì)及其變化規(guī)律,****

第一個詞為維基百科的詞條,后面的詞為該詞條的解釋。為了提高對詞條切詞的準確性,我們對整個詞條一空格為分隔符,提取詞條如上面的海洋學(xué),使用jiaba動態(tài)添加詞典的方法jieba.add_word(海洋學(xué)),然后對后面的解釋進行切詞,切詞后寫入文件。格式如下:

文學(xué) , 在 最 廣泛 的 意義 上 , 是 任何 單一 的 書面 作品***

每個詞語已空格為進行連接,對998616條維基百科進行切詞,并寫入文件并作為后面訓(xùn)練word2vec的語料。

4、訓(xùn)練word2vec模型

使用gensim訓(xùn)練剛剛我們處理好的語料,并保存。

from gensim.models.word2vec import Word2Vec,LineSentence
import multiprocessing
 print('開始訓(xùn)練')
    model = Word2Vec(LineSentence('./wikiCorpus_02.txt'),size=300,workers=multiprocessing.cpu_count())
    print('結(jié)束')
    model.init_sims(replace=True)
    model.save('./wiki_corpus_02_predict.model')

5、測試訓(xùn)練好的模型

尋找和寶馬最相近的十個詞語

model =  Word2Vec.load('./wiki_corpus_02_predict.model')

    # 第一個詞的向量表示
    # print(model.wv.syn0[0])
    # 詞的矩陣
    # print(model.wv.index2word[0])

    # 1.
    print(model.most_similar('寶馬'))

得到結(jié)果如下:

[('歐寶', 0.7233036756515503), ('捷豹', 0.7231091260910034), ('BMW', 0.7167201638221741), ('雪鐵龍', 0.7163304090499878), ('標致', 0.711229681968689), ('沃爾沃', 0.7081398367881775), ('奧迪', 0.7074229717254639), ('保時捷', 0.697162926197052), ('超級跑車', 0.6864667534828186), ('大眾汽車', 0.6775105595588684)]
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 常用概念: 自然語言處理(NLP) 數(shù)據(jù)挖掘 推薦算法 用戶畫像 知識圖譜 信息檢索 文本分類 常用技術(shù): 詞級別...
    御風(fēng)之星閱讀 9,963評論 1 25
  • 學(xué)習(xí)內(nèi)容: 《用戶故事與敏捷方法》第9章(發(fā)布計劃)、第10章(迭代計劃)、第11章(測量并監(jiān)控速率)。 重點摘要...
    Lynn_XL2017閱讀 268評論 0 0
  • 開頭派的父親的話點明了這部影片的主旨——信仰。 時隔4年又一次看這部影片,還記得是我大一的時候看的,那時的我感嘆這...
    秋秋的第十九號房間閱讀 571評論 0 2

友情鏈接更多精彩內(nèi)容