中文分詞(Chinese Word Segmentation),將中文語句切割成單獨的詞組。英文使用空格來分開每個單詞的,而中文單獨一個漢字跟詞有時候完全不是同個含義,因此,中文分詞相比英文分詞難度高很多。
分詞主要用于NLP 自然語言處理(Natural Language Processing),使用場景有:
搜索優化,關鍵詞提?。ò俣戎笖担? 語義分析,智能問答系統(客服系統) 非結構化文本媒體內容,如社交信息(微博熱榜) 文本聚類,根據內容生成分類(行業分類)Python的中文分詞庫有很多,常見的有:
jieba(結巴分詞) THULAC(清華大學自然語言處理與社會人文計算實驗室) pkuseg(北京大學語言計算與機器學習研究組) SnowNLP pynlpir CoreNLP pyltp通常前三個是比較經常見到的,主要在易用性/準確率/性能都還不錯。我個人常用的一直都是結巴分詞(比較早接觸),最近使用pkuseg,兩者的使用后面詳細講。
“結巴”中文分詞:做最好的 Python 中文分詞組件
支持三種分詞模式: 精確模式,試圖將句子最精確地切開,適合文本分析; 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非???,但是不能解決歧義; 搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。 支持繁體分詞 支持自定義詞典jieba分詞實例
我們使用京東商場的美的電器評論來看看結巴分詞的效果。如果你沒有安裝結巴分詞庫則需要在命令行下輸入pip install jieba,安裝完之后即可開始分詞之旅。
評論數據整理在文件meidi_jd.csv文件中,讀取數據前先導入相關庫。因為中文的文本或文件的編碼方式不同編碼選擇gb18030,有時候是utf-8、gb2312、gbk自行測試。
# 導入相關庫import pandas as pdimport jieba# 讀取數據data = pd.read_csv('meidi_jd.csv', encoding='gb18030')# 查看數據data.head()
# 生成分詞data['cut'] = data['comment'].apply(lambda x : list(jieba.cut(x)))data.head()
到這里我們僅僅通過一行代碼即可生成中文的分詞列表,如果你想要生成分詞后去重可以改成這樣。
data['cut'] = data['comment'].apply(lambda x : list(set(jieba.cut(x))))
經過前面的分詞后,我們可以通過查看分詞是否準確,會發現實際上有些詞被分隔成單獨的漢字,例如:
新聞熱點
疑難解答