高秀艷 耿興隆 李戰(zhàn)軍
【摘 要】智能機器人自動回復(fù)功能的實現(xiàn)依賴于足量的語料庫,語料庫的基本單位為詞語,因此將整篇的文章語料進行分詞并對出詞語進行詞頻統(tǒng)計,可以為下一步的機器學(xué)習(xí)做好準備。Python語言在自然語言處理過程中廣受編程者青睞,它簡潔的語法和強大的第三方庫為編程提供了極大的方便。Jieba模塊在自然語言處理中功能強大,能按照全模式、精確模式和搜索引擎模式對文章進行分詞,使用該模塊對文章進行分詞后,再利用analyse子模塊進行詞頻統(tǒng)計,可以為后期的模型訓(xùn)練提供更準確的數(shù)據(jù)集,從而提高機器人的回復(fù)準確率。
【關(guān)鍵詞】機器人;語料庫;Jieba模塊
自然語言處理是和語言緊密相關(guān)的一門學(xué)科,是統(tǒng)計和機器學(xué)習(xí)和語言學(xué)的交叉學(xué)科,是讓計算機能夠理解人類語言的一種技術(shù)。自然語言處理的主要目的是研究能夠表示自然語言的模型,及如何通過計算機處理這些數(shù)學(xué)模型[1]。智能機器人即依據(jù)此進行工作,獲取足量的語料后進行分詞,并對詞語按一定的規(guī)則進行建模,用模型訓(xùn)練機器人,使它具備根據(jù)輸入內(nèi)容自動檢索答案并給出反饋的功能,從而實現(xiàn)自動回復(fù)。
一、漢語分詞的研究現(xiàn)狀
中文分詞有人工分詞和機器分詞兩種,鑒于分詞效率,目前多使用機器分詞,目前常用的機器自動分詞方法有:基于詞典的分詞方法、基于統(tǒng)計的分詞方法和混合方法[2][3],其中詞典和統(tǒng)計的方法是目前分詞技術(shù)的主要方法,但基于詞典的分詞方法在處理歧義字段時性能欠佳,而基于統(tǒng)計的分詞方法雖能解決這一問題,但由于其需要大量的計算,時間消耗相當(dāng)可觀,因此混合方法是目前被最多采用的方法。
二、python語言及jieba分詞模塊介紹
Python語言是當(dāng)今流行的開源編程語言,它可以跨平臺使用,語法簡潔,安裝方便,廣受編程者青睞,其豐富的第三方庫也使它如虎添翼,更加方便的完成各種數(shù)據(jù)處理及運算。
Jieba模塊是免費的第三方模塊,也是目前Python中最好的中文分詞組件,它可以以精確模式、全模式、搜索引擎模式三種模式對語料進行分詞,并可使用子模塊analyse進行關(guān)鍵詞提取及詞頻統(tǒng)計。
Jieba模塊使用cut函數(shù)或lcut函數(shù)實現(xiàn)分詞,使用cut_all參數(shù)來判斷是否使用精確模式:
cut_all = True:使用全模式,獲取文本中所有可能的組詞方式。
cut_all = False: 使用精確模式,也即默認模式。
Cut函數(shù)返回可迭代序列,可以使用for循環(huán)進行遍歷,lcut則直接返回分詞后的詞語列表。
jieba的安裝及導(dǎo)入:
Jieba的安裝非常方便,可以直接使用python中的pip命令進行安裝,保證電腦聯(lián)網(wǎng)的情況下,在windows運行窗口輸入pip install jieba,即可進行安裝,成功安裝后的提示如圖1。
若遇此種方法安裝不成功,也可以單獨下載jieba的安裝包,并使用cd命令切換到該安裝包所在目錄下,執(zhí)行python setup.py install命令進行安裝。
Jieba成功安裝后,可以使用import jieba來在程序中導(dǎo)入模塊。
三、使用jieba模塊實現(xiàn)對文章的分詞及詞頻統(tǒng)計
Jieba模塊提供了豐富的函數(shù)用于處理語料文本,但在此之前我們應(yīng)先獲得文本,為不再額外安裝其它的文字處理模塊,本文使用txt文件進行語料文章存儲,進行分詞及詞頻統(tǒng)計的基本流程為:打開文件→讀取文件內(nèi)容→進行分詞→統(tǒng)計各詞權(quán)重。
由于全模式分詞時可能帶來大量的詞匯冗余,影響后期模塊訓(xùn)練時的數(shù)據(jù)集,進而影響模型的準確性,本文選取精確模式進行分詞,兩種模式對部分語句的分詞結(jié)果比較如下:
原句:戰(zhàn)士們的三只小船就奔著東南方向,箭一樣飛去了。
全模式分詞結(jié)果:戰(zhàn)士/們/的/三只/小船/就/奔/著/東南/南方/方向///箭/一樣/飛去/了.
精確模式的分詞結(jié)果:戰(zhàn)士/們/的/三只/小船/就/奔/著/東南/方向/,/箭/一樣/飛去/了.
本文使用jieba模塊的cut函數(shù)對讀取到的語料內(nèi)容進行分詞,將分詞結(jié)果以斜線(/)連接進行打印,使用analyse模塊的extract_tags函數(shù)統(tǒng)計出現(xiàn)頻率最高的前20個單詞及單詞頻率,部分源碼如下:
f=open("hehuadian.txt",'r')#打開《荷花淀》文件
content = f.read()
print(type(content))
f.close()
word_list = jieba.cut(content,cut_all=False)#精確模式實現(xiàn)分詞
print("分詞結(jié)果:",'/'.join(word_list))
#統(tǒng)計出現(xiàn)頻率最高的20個單詞及其頻率
tags = jieba.analyse.extract_tags(content,topK=20,withWeight=True)
print("頻率前20的關(guān)鍵詞及其權(quán)重為:")
for i in tags:
print("%-3s:%6.2f;"%(i[0],i[1]))
運行效果如圖2所示:
對語料源進行分詞是實現(xiàn)智能機器人的第一步工作,接下來將根據(jù)分詞及詞頻統(tǒng)計結(jié)果構(gòu)建訓(xùn)練模型,進而構(gòu)建問題/答案庫,從而實現(xiàn)針對給定提問內(nèi)容的自動回復(fù)。
參考文獻:
[1]]董永漢.一種網(wǎng)絡(luò)聊天機器人的研究與實現(xiàn)[D].杭州:浙江大學(xué),2017.
[2]張喜.基于主義模板與知識庫的智能導(dǎo)購機器人系統(tǒng)的研究與實現(xiàn)[D].北京:中央民族大學(xué),2012.
[3]黃昌寧,趙海.中文分詞十年回顧[J].中文信息學(xué)報,2007,21(3):8-19.