通過搜狗新聞?wù)Z料用word2Vec訓(xùn)練中文模型

在搜狗實(shí)驗室里下載相關(guān)語料稠歉,我下載的是全網(wǎng)新聞: http://www.sogou.com/labs/resource/ca.php

下下來的語料蛮拔,看到有1.54G的大信プ贰:

文件大小

其中里面內(nèi)容的格式為:


文本格式

剛下下來的語料是用gbk編碼的,在mac或linux上都會呈亂碼形式娩鹉,需要將之轉(zhuǎn)換為utf-8編碼攻谁。而且我們只需要<content>里面的內(nèi)容。因此先轉(zhuǎn)換編碼和獲取content內(nèi)容弯予。這里簡單的方法可以通過shell的命令來完成:

cat news_tensite_xml.dat | iconv -f gbk -t utf-8 -c | grep "<content>"  > corpus.txt 

轉(zhuǎn)換完后的數(shù)據(jù)如下:

數(shù)據(jù)語料

這時候全是content中的內(nèi)容了戚宦,雖然還有<content>標(biāo)簽在,不過這個可以在程序中去掉锈嫩。

下面一個操作就是進(jìn)行分詞受楼,因為是用Python來進(jìn)行的,使用jieba分詞來進(jìn)行分詞操作祠挫,生成分詞文件corpus_seg.txt:

python word_segment.py corpus.txt corpus_seg.txt

# -*- coding: utf-8 -*-
# word_segment.py用于語料分詞

import logging
import os.path
import sys
import re
import jieba

reload(sys)
sys.setdefaultencoding( "utf-8" )

# 先用正則將<content>和</content>去掉
def reTest(content):
  reContent = re.sub('<content>|</content>','',content)
  return reContent

if __name__ == '__main__':
  program = os.path.basename(sys.argv[0])
  logger = logging.getLogger(program)
  logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
  logging.root.setLevel(level=logging.INFO)
  logger.info("running %s" % ' '.join(sys.argv))

   # check and process input arguments
  if len(sys.argv) < 3:
    print globals()['__doc__'] % locals()
    sys.exit(1)
  inp, outp = sys.argv[1:3]
  space = " "
  i = 0

  finput = open(inp)
  foutput = open(outp,'w')
  for line in finput:
    line_seg = jieba.cut(reTest(line))
    output.write(space.join(line_seg))
    i = i + 1
    if (i % 1000 == 0):
      logger.info("Saved " + str(i) + " articles_seg")

  finput.close()
  foutput.close()
  logger.info("Finished Saved " + str(i) + " articles")

跑起來如下:

運(yùn)行結(jié)果

分完詞的樣子:

分詞完畢那槽,<content></content>也去掉了

接著我們可以用gensim中的word2vec工具訓(xùn)練:

python train_word2vec_model.py corpus_seg.txt corpus.model corpus.vector

# -*- coding: utf-8 -*-
# train_word2vec_model.py用于訓(xùn)練模型

import logging
import os.path
import sys
import multiprocessing

from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence

if __name__=='__main__':
  program = os.path.basename(sys.argv[0])
  logger = logging.getLogger(program)

  logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
  logging.root.setLavel(level=logging.INFO)
  logging.info("running %s" % ' '.join(sys.argv))

  if len(sys.argv) < 4:
    print global()['__doc__'] % locals()
    sys.exit(1)

  inp,outp,outp2 = sys.argv[1:4]

  model = Word2Vec(LineSentence(inp),size=400,window=5,min_count=5,workers=multiprocessing.cup_count())

  model.save(outp)
  model.save_word2vec_format(outp2,binary=false)

運(yùn)行信息如下:

正在進(jìn)行中...

完畢后,即訓(xùn)練出了模型等舔,這是可以測試測試模型的效果了,進(jìn)入ipython:

In [1]: import gensim

In [2]: model = gensim.models.Word2Vec.load('corpus.model')

In [3]: result = model.most_similar(u'警察')

In [4]: for word in result:
   ...:     print word[0],word[1]
   ...:

警員 0.668260276318
民警 0.566563367844
軍警 0.560631096363
便衣警察 0.560409486294
保安 0.559458613396
交警 0.553144752979
協(xié)警 0.55225610733
公安人員 0.536189615726
警方 0.535990476608
警務(wù)人員 0.5125041008

In [5]: result = model.most_similar(u'妹紙')

In [6]: for word in result:
   ...:     print word[0],word[1]
   ...:

妹子 0.588376522064
噢 0.559590697289
帥哥 0.550627946854
美眉 0.549147129059
蘿莉 0.534497618675
尤物 0.525674104691
小蘿莉 0.517127275467
小女生 0.508114397526
妖嬈 0.506700277328
美女 0.503593623638

In [7]: result = model.most_similar(u'御姐')

In [8]: for word in result:
   ...:     print word[0],word[1]
   ...:

冷艷 0.705523848534
蘿莉 0.701750993729
俠女 0.645917892456
玉女 0.643954575062
百變 0.634887218475
小蘿莉 0.62935769558
丑女 0.613193750381
妖嬈 0.61169230938
清純 0.608936905861
風(fēng)騷 0.602776527405

In [9]: result = model.most_similar(u'馬云')

In [10]: for word in result:
   ...:     print word[0],word[1]
   ...:

阿里巴巴 0.557115197182
馬化騰 0.551600694656
雷軍 0.495278447866
李彥宏 0.476020514965
柳傳志 0.475475847721
郭臺銘 0.462114006281
宋衛(wèi)平 0.453877806664
閻焱 0.452617198229
周鴻祎 0.44635617733
俞敏洪 0.43476909399

In [11]: model.similarity(u'男人',u'女人')
Out[11]: 0.90834058044551369

In [12]: print model.doesnt_match(u"早餐 晚餐 午餐 計算機(jī)".split())
計算機(jī)

In [13]: model.n_similarity([u'御姐',u'蘿莉'],[u'計算機(jī)',u'編程'])
Out[13]: -0.054454374940044653

通過測試糟趾,看起來效果還蠻不錯的慌植。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市义郑,隨后出現(xiàn)的幾起案子蝶柿,更是在濱河造成了極大的恐慌,老刑警劉巖非驮,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件交汤,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)芙扎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門星岗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人戒洼,你說我怎么就攤上這事俏橘。” “怎么了圈浇?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵寥掐,是天一觀的道長。 經(jīng)常有香客問我磷蜀,道長召耘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任褐隆,我火速辦了婚禮怎茫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘妓灌。我一直安慰自己轨蛤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布虫埂。 她就那樣靜靜地躺著祥山,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掉伏。 梳的紋絲不亂的頭發(fā)上缝呕,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音斧散,去河邊找鬼供常。 笑死,一個胖子當(dāng)著我的面吹牛鸡捐,可吹牛的內(nèi)容都是我干的栈暇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼箍镜,長吁一口氣:“原來是場噩夢啊……” “哼源祈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起色迂,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤香缺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后歇僧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體图张,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了祸轮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兽埃。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖倔撞,靈堂內(nèi)的尸體忽然破棺而出讲仰,到底是詐尸還是另有隱情,我是刑警寧澤痪蝇,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布鄙陡,位于F島的核電站,受9級特大地震影響躏啰,放射性物質(zhì)發(fā)生泄漏趁矾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一给僵、第九天 我趴在偏房一處隱蔽的房頂上張望毫捣。 院中可真熱鬧,春花似錦帝际、人聲如沸蔓同。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斑粱。三九已至,卻和暖如春脯爪,著一層夾襖步出監(jiān)牢的瞬間则北,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工痕慢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尚揣,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓掖举,卻偏偏與公主長得像快骗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拇泛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容