Ⅰ 部分常用分詞工具使用整理
以下分詞工具均能在python環境中直接調用(排名不分先後)。
1、jieba(結巴分詞) 免費使用
2、HanLP(漢語言處理包) 免費使用
3、SnowNLP(中文的類庫) 免費使用
4、FoolNLTK(中文處理工具包) 免費使用
5、Jiagu(甲骨NLP) 免費使用
6、pyltp(哈工大語言雲) 商用需要付費
7、THULAC(清華中文詞法分析工具包) 商用需要付費
8、NLPIR(漢語分詞系統) 付費使用
1、jieba(結巴分詞)
「結巴」中文分詞:做最好的 Python 中文分片語件。
項目Github地址:jieba
安裝 :
pip install jieba
使用 :
import jieba
jieba.initialize()
text = '化妝和服裝'
words = jieba.cut(text)
words = list(words)
print(words)
2、HanLP(漢語言處理包)
HanLP是一系列模型與演算法組成的NLP工具包,由大快搜索主導並完全開源,目標是普及自然語言處理在生產環境中的應用。HanLP具備功能完善、性能高效、架構清晰、語料時新、可自定義的特點。
項目Github地址:pyhanlp
安裝:
pip install pyhanlp
使用 :
import pyhanlp
text = '化妝和服裝'
words = []
for term in pyhanlp.HanLP.segment(text):
words.append(term.word)
print(words)
3、SnowNLP(中文的類庫)
SnowNLP是一個python寫的類庫,可以方便的處理中文文本內容,是受到了TextBlob的啟發而寫的,由於現在大部分的自然語言處理庫基本都是針對英文的,於是寫了一個方便處理中文的類庫,並且和TextBlob不同的是,這里沒有用NLTK,所有的演算法都是自己實現的,並且自帶了一些訓練好的字典。
項目Github地址:snownlp
安裝:
pip install snownlp
使用:
import snownlp
text = '化妝和服裝'
words = snownlp.SnowNLP(text).words
print(words)
4、FoolNLTK(中文處理工具包)
可能不是最快的開源中文分詞,但很可能是最準的開源中文分詞。
項目Github地址:FoolNLTK
安裝:
pip install foolnltk
使用:
import fool
text = '化妝和服裝'
words = fool.cut(text)
print(words)
5、Jiagu(甲骨NLP)
基於BiLSTM模型,使用大規模語料訓練而成。將提供中文分詞、詞性標注、命名實體識別、關鍵詞抽取、文本摘要、新詞發現等常用自然語言處理功能。參考了各大工具優缺點製作,將Jiagu回饋給大家。
項目Github地址:jiagu
安裝:
pip3 install jiagu
使用:
import jiagu
jiagu.init()
text = '化妝和服裝'
words = jiagu.seg(text)
print(words)
6、pyltp(哈工大語言雲)
pyltp 是 LTP 的 Python 封裝,提供了分詞,詞性標注,命名實體識別,依存句法分析,語義角色標注的功能。
項目Github地址:pyltp,3.4模型下載鏈接:網盤
安裝:
pip install pyltp
使用:
import pyltp
segmentor = pyltp.Segmentor()
segmentor.load('model/ltp_data_v3.4.0/cws.model') # 模型放置的路徑
text = '化妝和服裝'
words = segmentor.segment(text)
words = list(words)
print(words)
7、THULAC(清華中文詞法分析工具包)
THULAC(THU Lexical Analyzer for Chinese)由清華大學自然語言處理與 社會 人文計算實驗室研製推出的一套中文詞法分析工具包,具有中文分詞和詞性標注功能。
項目Github地址:THULAC-Python
安裝:
pip install thulac
使用:
import thulac
thu = thulac.thulac(seg_only=True)
text = '化妝和服裝'
words = thu.cut(text, text=True).split()
print(words)
NLPIR(漢語分詞系統)
主要功能包括中文分詞;英文分詞;詞性標注;命名實體識別;新詞識別;關鍵詞提取;支持用戶專業詞典與微博分析。NLPIR系統支持多種編碼、多種操作系統、多種開發語言與平台。
項目Github地址:pynlpir
安裝:
pip install pynlpir
下載證書覆蓋到安裝目錄,NLPIR.user 例如安裝目錄:/usr/lib64/python3.4/site-packages/pynlpir/Data
使用 :
import pynlpir
pynlpir.open()
text = '化妝和服裝'
words = pynlpir.segment(text, pos_tagging=False)
print(words)
pynlpir.close()
Ⅱ python中怎樣處理漢語的同義詞用結巴分詞
python中文分詞:結巴分詞
中文分詞是中文文本處理的一個基礎性工作,結巴分詞利用進行中文分詞。其基本實現原理有三點:
基於Trie樹結構實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖(DAG)
採用了動態規劃查找最大概率路徑, 找出基於詞頻的最大切分組合
對於未登錄詞,採用了基於漢字成詞能力的HMM模型,使用了Viterbi演算法
安裝(Linux環境)
下載工具包,解壓後進入目錄下,運行:python setup.py install
模式
默認模式,試圖將句子最精確地切開,適合文本分析
全模式,把句子中所有的可以成詞的詞語都掃描出來,適合搜索引擎
介面
組件只提供jieba.cut 方法用於分詞
cut方法接受兩個輸入參數:
第一個參數為需要分詞的字元串
cut_all參數用來控制分詞模式
待分詞的字元串可以是gbk字元串、utf-8字元串或者unicode
jieba.cut返回的結構是一個可迭代的generator,可以使用for循環來獲得分詞後得到的每一個詞語(unicode),也可以用list(jieba.cut(...))轉化為list
實例
#! -*- coding:utf-8 -*-
import jieba
seg_list = jieba.cut("我來到北京清華大學", cut_all = True)
print "Full Mode:", ' '.join(seg_list)
seg_list = jieba.cut("我來到北京清華大學")
print "Default Mode:", ' '.join(seg_list)
Ⅲ 如何用 Python 中的 NLTK 對中文進行分析和處理
我感覺用nltk 處理中文是完全可用的。其重點在於中文分詞和文本表達的形式。
中文和英文主要的不同之處是中文需要分詞。因為nltk 的處理粒度一般是詞,所以必須要先對文本進行分詞然後再用nltk 來處理(不需要用nltk 來做分詞,直接用分詞包就可以了。嚴重推薦結巴分詞,非常好用)。
中文分詞之後,文本就是一個由每個片語成的長數組:[word1, word2, word3…… wordn]。之後就可以使用nltk 裡面的各種方法來處理這個文本了。比如用FreqDist 統計文本詞頻,用bigrams 把文本變成雙片語的形式:[(word1, word2), (word2, word3), (word3, word4)……(wordn-1, wordn)]。
Ⅳ 用python怎麼能夠將一句中文分割為單個的字
字元串可以直接分片或者索引訪問,比如s[0]=我,s[-1]=做。等等肆鍵友。
如果是要轉成list,可以直亮指接構造,如: l=list('abc')或者l=list(s)
分詞需要相應的演算法和詞典支持。pymmseg-cpp是一個不錯的python中文分詞庫。你可以試試裂槐。
https://github.com/pluskid/pymmseg-cpp/
Ⅳ jieba分詞(R vs. python)
自然語言處理(NLP)是機器學習重要分支之一,主要應用於篇章理解、文本摘要、情感分析、知識圖譜、文本翻譯等領域。而NLP應用首先是對文本進行分詞,當前中文分詞器有Ansj、paoding、盤古分詞等多種,而最基礎的分詞器應該屬於jieba分詞器(比較見下圖)。
下面將分別應用R和python對jieba分詞器在中文分詞、詞性標注和關鍵詞提取領域的應用進行比較。
R實現
通過函數worker()來初始化分詞引擎,使用segment()進行分詞。有四種分詞模式:最大概率法(MP)、隱馬爾科夫模型(HMM)、混合模型(Mix)及索引模型(query),默認為混合模型。具體可查看help(worker).
#install.packages('jiebaR')library(jiebaR)mixseg <- worker()segment( "這是一段測試文本" , mixseg ) #或者用以下操作mixseg['這是一段測試文本']mixseg <= "這是一段測試文本"
python實現
python中需安裝jieba庫,運用jieba.cut實現分詞。cut_all參數為分詞類型,默認為精確模式。
import jiebaseg_list = jieba.cut(u"這是一段測試文本",cut_all = False)print("Full mode: "+ ",".join(seg_list)) #默認精確模式
無論是R還是python都為utf—8編碼。
R實現
可以使用<=.tagger 或者tag 來進行分詞和詞性標注,詞性標注使用混合模型模型分詞,標注採用和 ictclas 兼容的標記法。
words = "我愛北京天安門"tagger = worker("tag") #開啟詞性標注啟發器tagger <= words # r v ns ns # "我" "愛" "北京" "天安門"
python實現
#詞性標注import jieba.posseg as psegwords = pseg.cut("我愛北京天安門")for word,flag in words: print('%s, %s' %(word,flag))
R實現
R關鍵詞提取使用逆向文件頻率(IDF)文本語料庫,通過worker參數「keywords」開啟關鍵詞提取啟發器,topn參數為關鍵詞的個數。
keys = worker("keywords",topn = 5, idf = IDFPATH)keys <= "會議邀請到美國密歇根大學(University of Michigan, Ann Arbor)環境健康科學系副教授奚傳武博士作題為「Multibarrier approach for safe drinking waterin the US : Why it failed in Flint」的學術講座,介紹美國密歇根Flint市飲用水污染事故的發生發展和處置等方面內容。講座後各相關單位同志與奚傳武教授就生活飲用水在線監測系統、美國水污染事件的處置方式、生活飲用水老舊管網改造、如何有效減少消毒副產物以及美國涉水產品和二次供水單位的監管模式等問題進行了探討和交流。本次交流會是我市生活飲用水衛生管理工作洽商機制運行以來的又一次新嘗試,也為我市衛生計生綜合監督部門探索生活飲用水衛生安全管理模式及突發水污染事件的應對措施開拓了眼界和思路。"#結果:# 48.8677 23.4784 22.1402 20.326 18.5354 # "飲用水" "Flint" "衛生" "水污染" "生活"
python實現
python實現關鍵詞提取可運用TF-IDF方法和TextRank方法。allowPOS參數為限定范圍詞性類型。
#關鍵詞提取import jieba.analysecontent = u'會議邀請到美國密歇根大學(University of Michigan, Ann Arbor)環境健康科學系副教授奚傳武博士作題為「Multibarrier approach for safe drinking waterin the US : Why it failed in Flint」的學術講座,介紹美國密歇根Flint市飲用水污染事故的發生發展和處置等方面內容。講座後各相關單位同志與奚傳武教授就生活飲用水在線監測系統、美國水污染事件的處置方式、生活飲用水老舊管網改造、如何有效減少消毒副產物以及美國涉水產品和二次供水單位的監管模式等問題進行了探討和交流。本次交流會是我市生活飲用水衛生管理工作洽商機制運行以來的又一次新嘗試,也為我市衛生計生綜合監督部門探索生活飲用水衛生安全管理模式及突發水污染事件的應對措施開拓了眼界和思路。'#基於TF-IDFkeywords = jieba.analyse.extract_tags(content,topK = 5,withWeight = True,allowPOS = ('n','nr','ns'))for item in keywords: print item[0],item[1] #基於TF-IDF結果# 飲用水 0.448327672795# Flint 0.219353532163# 衛生 0.203120821773# 水污染 0.186477211628# 生活 0.170049997544
#基於TextRankkeywords = jieba.analyse.textrank(content,topK = 5,withWeight = True,allowPOS = ('n','nr','ns'))for item in keywords: print item[0],item[1] #基於TextRank結果:# 飲用水 1.0# 美國 0.570564785973# 奚傳武 0.510738424509# 單位 0.472841889334# 講座 0.443770732053
寫在文後
自然語言處理(NLP)在數據分析領域有其特殊的應用,在R中除了jiebaR包,中文分詞Rwordseg包也非常常用。一般的文本挖掘步驟包括:文本獲取(主要用網路爬取)——文本處理(分詞、詞性標注、刪除停用詞等)——文本分析(主題模型、情感分析)——分析可視化(詞雲、知識圖譜等)。本文是自然語言處理的第一篇,後續將分別總結下應用深度學習Word2vec進行詞嵌入以及主題模型、情感分析的常用NLP方法。
參考資料
Introction · jiebaR 中文分詞 https://qinwenfeng.com/jiebaR/segment.html
知乎:【文本分析】利用jiebaR進行中文分詞 https://zhuanlan.hu.com/p/24882048
雪晴數據網:全棧數據工程師養成攻略 http://www.xueqing.tv/course/73
搜狗實驗室,詞性標注應用 http://www.sogou.com/labs/webservice/
【R文本挖掘】中文分詞Rwordseg http://blog.163.com/zzz216@yeah/blog/static/162554684201412895732586/