高秀艷 耿興隆 李戰軍

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