下面將分別應用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方法。
參考資料
Introduction · jiebaR 中文分詞 /jiebaR/segment.html
知乎:文本分析利用jiebaR進行中文分詞 /p/24882048
雪晴數據網:全棧數據工程師養成攻略 /labs/webservice/
R文本挖掘中文分詞Rwordseg /zzz216@yeah/blog/static/162554684201412895732586/