中文文字分類不像英文文字分類一樣只需要將單字一個個分開就可以了,中文文字分類需要將文字組成的字詞分出來構成一個個向量。所以,需要分詞。
這裡使用網路上流行的開源分詞工具結巴分詞(jieba),它可以有效的將句子裡的詞語一個個的提取出來,關於結巴分詞的原理此處不再贅述,關鍵是他的使用方法。
1、安裝
結巴分詞是一個Python的工具函數庫,在python環境下安裝,安裝方式如下:
(1)python2.x下
全自動安裝:easy_install jieba 或pip install jieba
半自動安裝:先下載,解壓縮後執行python setup.py install# 透過## 手動安裝:將jieba目錄放置於目前目錄或site-packages目錄
透過import jieba 來引用
(2)python3.x下
目前master分支是只支援Python2.x 的
Python3.x 版本的分支也已經基本可用:
git clone git checkout jieba3k python setup.py install
2、使用 在使用它的時候首先要用import jieba程式碼導入jieba庫,而由於中文文本中可能除了文本內容以外還有一些符號比如括號、等號或箭頭等,還需要將這些通過正規表示式的方式匹配出來並刪除,
由於使用到了正規表示式,所以還需要使用import re來匯入相關函數庫。
具體程式碼如下:
def textParse(sentence): import jieba import re #以下两行过滤出中文及字符串以外的其他符号 r= re.compile("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+") sentence=r.sub('',sentence) seg_list = jieba.cut(sentence) #print ("Default Mode:", ' '.join(seg_list)) return [tok for tok in seg_list]textParse函數接收一個句子(sentence)做為參數,回傳結果是一個由句子字詞構成的陣列。
結巴分詞中最關鍵的函數為jieba.cut該函數將接收到的句子分割成一個個字詞並傳回一個可供迭代的generator。程式碼的最後一行將這個結構轉換為陣列。
3、停用詞 停用詞是指一些中文中出現的語氣詞或連接詞,這些詞如果不進行踢出,會影響核心詞與分類的明確關係。例如“的”,“之”,“與”,“和”等,也可以視情況增加適合本分類場景的停用詞。中文停用詞表涵蓋了1598個停用詞。可以從github上取得。
項目改進如下:
(1)在專案中新停用詞表stopkey.txt
將所有中文停用詞進到該文字檔案中。
(2)中文分詞時加入過濾停用詞功能
4、自訂字典 針對分類場景,自訂一些常用詞,當分詞的時候遇到這些字就把他們當作單字處理。如增加資料庫中「多對多」到字典中可以避免分詞的時候將上述詞語分為「多」「對」「多」。這些字典的定義也與分類器應用場景有關。
項目改進如下:
(1)加入自訂字典檔案userdict.txt
(2)中文分詞中加入自訂字典分詞功能
5、改進後的中文分詞函數 程式碼如下(同時又增加了其它共同符號):
#中文分词 def textParse(sentence): import jieba import re #以下两行过滤出中文及字符串以外的其他符号 r= re.compile("[\s+\.\!\/_\?【】\-(?:\))(?:\()(?:\[)(?:\])(\:):,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+") sentence=r.sub('',sentence) jieba.load_userdict("userdict.txt");#加载自定义词典 stoplist={}.fromkeys([line.strip() for line in open("stopkey.txt",'r',encoding= 'utf-8')])#停用词文件是utf8编码 seg_list = jieba.cut(sentence) seg_list=[word for word in list(seg_list) if word not in stoplist] #print ("Default Mode:", ' '.join(seg_list)) return seg_list
以上是jieba中文分詞的使用實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!