中文分詞工具評估:chinese-segmentation-evaluation

2021-02-19 AINLP

作者:tiandi,小米AI實驗室,智能問答、智能客服方向。

專欄地址:

http://www.52nlp.cn/author/tiandiweizun

中文分詞工具評估項目地址:

https://github.com/tiandiweizun/chinese-segmentation-evaluation

最近我們分享了一些關於分詞的事情,對於琳琅滿目的分詞工具,我們到底該選擇哪個呢?

這裡有一個Java開源項目cws_evaluation,對中文分詞做了評比,但有幾點不足:(1). 只有java版本,但是機器學習主要是基於python的 (2).效果指標為行完美率和字完美率,該指標不妥,特別是句子越長,越無意義,(3). 每種分詞工具評測的算法太多了,這裡僅評比了默認的分詞算法。

基於此,我做了一個java和python版本中文分詞工具評比項目chinese-segmentation-evaluation。

項目簡介

測試了java和python常見中文分詞工具的效果和效率

javaRequirement

java8

步驟

git clone https://github.com/tiandiweizun/nlp-evaluation.git

cd nlp-evaluation/java

(windows)  .\gradlew.bat build   (linux)  ./gradlew build

java -Dfile.encoding=utf-8 -jar build/libs/nlp-evaluation-java-1.0.0.jar

說明

java -jar nlp-evaluation-java-1.0.0.jar 有3個參數,可以執行 java -jar nlp-evaluation-java-1.0.0.jar -h 查看
-i 分詞文件,默認為data/seg.data_big文件,每行一個句子,每個詞用空格分開,可以指定自己的測試集
-o 分詞結果存儲路徑,默認不存儲
-n 最大讀取分詞文件行數
-c 需要評估的分詞器名稱,用英文逗號隔開,默認HanLP,jieba,thulac,示例: -c=HanLP

由於斯坦福分詞效果一般,速度極慢,且模型巨大,在打包的時候已經排除(不影響在IDE裡面測試), 打包如果要包含斯坦福分詞,修改build.gradle,注釋掉exclude(dependency('edu.stanford.nlp:stanford-corenlp'))

由於Word、Ansj、Jcseg、MMSeg4j存在bug(把詞語拼接起來和原始句子不一樣),在代碼裡面已經注釋掉了,不進行測試。

依賴的庫均存在於maven中心倉庫,像庖丁、復旦分詞等找不到的,這裡沒有測試

測試效果

總行數:2533709 總字符數:28374490

經過多次測試發現,thulac在linux上速度不是特別穩定,最快與jiba差不多

開發者pythonRequirement

Python:3
其他參見 requirements.txt

步驟

1. git clone https://github.com/tiandiweizun/nlp-evaluation.git
2. cd nlp-evaluation
3. pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
4. cd python/indi.tiandi.nlp.evaluation
5. python3 SegEvaluation.py

說明

python3 SegEvaluation.py 有3個參數,可以執行 python3 SegEvaluation.py -h 查看
-i 分詞文件,默認為data/seg.data_big文件,每行一個句子,每個詞用空格分開,可以指定自己的測試集
-o 分詞結果存儲路徑,默認不存儲
-n 最大讀取分詞文件行數,由於python速度太慢,建議設置
-c 需要評估的分詞器名稱,用英文逗號隔開,默認pkuseg,jieba_fast,thulac

pynlpir存在bug(把詞語拼接起來和原始句子不一樣),pyltp在windows上不易安裝,這裡都沒有進行測試,比較慢的也沒有測試

測試效果

總行數:2533709 總字符數:28374490

開發者

建議使用pycharm打開python目錄,即可運行

如果需要使用pynlpir,需要修改pynlpir_path的安裝目錄

如果需要使用pyltp,需要修改ltp_data_dir的模型分詞目錄

評測自定義分詞器:只要實現segment方法和向evaluators追加即可。

總結

性能:java 遠高於python,至少差了一個數量級。

效果:對於jieba和thulac,在python和java上表現的不同,需要更多的時間去尋找原因,且java的thulac4j非官方提供。

數據:默認數據集來源於cws_evaluation,該項目為評估中文分詞的性能與效果,對於效果該項目採用的是行完美率這個指標,但是對於長句,這個指標會變的不合適,如果不同算法的錯誤率不一樣,但是如果有一個錯的詞,會導致整個句子都是錯的,不能很好的區分算法的precision

相關文章:

Python中文分詞工具大合集:安裝、使用和測試

中文分詞工具在線PK新增:FoolNLTK、LTP、StanfordCoreNLP

五款中文分詞工具在線PK: Jieba, SnowNLP, PkuSeg, THULAC, HanLP

中文分詞文章索引和分詞數據資源分享

相關焦點

  • zh_segmentation:基於 Chinese Treebank 6.0 構建的中文分詞模型
    下方示例使用 Python 3 和以下設定:MODEL_HANDLE = "https://hub.tensorflow.google.cn/google/zh_segmentation/1"原生 TF2,Eager 模式
  • 常用的開源中文分詞工具
    pid=4477來源: 許玉贏 發布時間:2014-04-20 23:45:18 最後編輯:2014-09-29 訪問量:10766由於中文文本詞與詞之間沒有像英文那樣有空格分隔,因此很多時候中文文本操作都涉及切詞,這裡整理了一些中文分詞工具。
  • Awesome-Chinese-NLP:中文自然語言處理相關資料
    Chinese, including word segmentation, part-of-speech tagging & named entity recognition.chinese_nlp (C++ & Python) Chinese Natural Language Processing tools and examplesChinese-Annotator (Python) Annotator for Chinese Text Corpus 中文文本標註工具Poplar (Typescript) A web-based
  • 五款中文分詞工具在線PK: Jieba, SnowNLP, PkuSeg, THULAC, HanLP
    PK,例如在AINLP公眾號後臺對話輸入:中文分詞 我愛自然語言處理,就可以得到五款分詞工具的分詞結果:現在的開源中文分詞工具或者模塊已經很豐富了,並且很多都有一些在封閉測試集上的效果對比數據,不過這僅僅只能展現這些分詞工具在這個封閉測試集上的效果,並不能全面說明問題,個人覺得,選擇一個適合自己業務的分詞器可能更重要,有的時候,還需要加一些私人定製的詞庫。
  • 中文分詞入門之資源
    作為中文信息處理的「橋頭堡」,中文分詞在國內的關注度似乎遠遠超過了自然語言處理的其他研究領域。在中文分詞中,資源的重要性又不言而喻,最大匹配法等需要一個好的詞表,而基於字標註的中文分詞方法又需要人工加工好的分詞語料庫。所以想研究中文分詞,第一步需要解決的就是資源問題,這裡曾經介紹過「LDC上免費的中文信息處理資源」,其中包括一個有頻率統計的詞表,共計44405條,就可以作為一個不錯的中文分詞詞表使用。
  • 專欄 中文分詞工具測評
    分詞對於研究和應用中文自然語言處理的童鞋來說,都是一個非常非常基礎的部件,分詞的質量直接影響到後續詞性標註、命名實體識別、句法分析等部件的準確性
  • 中文自然語言處理相關資料集合指南
    chinese_nlp (C++ & Python) Chinese Natural Language Processing tools and examplesChinese-Annotator (Python) Annotator for Chinese Text Corpus 中文文本標註工具Poplar (Typescript) A web-based
  • 多標準中文分詞:你需要的小trick
    作為NLP領域中經典任務之一,分詞幾乎是其他所有NLP任務的基礎,開展下遊NLP任務之前,往往需要先對文本進行分詞。多標準分詞(Multi-criteria Chinese word segmentation, MCCWS)的任務目的,即是為了利用多種標準分詞結果的共性知識,來提升單一分詞標準的標註效果。本文提出的模型,可以根據分詞標準指示,基於單一模型,給出不同標準的分詞結果。
  • Hive基於UDF進行文本分詞
    最後一個就是我們使用的分詞工具,因為目前主流的分詞器很多,選擇不同的分詞工具可能對我們的分詞結果有很多影響。分詞工具1:Elasticsearch的開源中文分詞器 IK Analysis(Star:2471)IK中文分詞器在Elasticsearch上的使用。
  • Android版中文分詞:原理、接入和啟動優化
    中文分詞功能是一項常用的基礎功能,有很多開源的工程實現,目前能應用於Android手機端的中文分詞器沒有很完善的版本。結巴分詞的原理結巴分詞採用兩種方式進行分詞,基於字典的分詞和基於HMM(隱馬爾科夫模型)的分詞。
  • 乾貨 | 史上最全中文分詞工具整理
    作者 | fendouai編輯 | 安可出品 | 磐創AI技術團隊【磐創AI導讀】:本文為中文分詞工具整理分享 一.中文分詞我們選擇Windows作為測試環境,根據第二屆國際漢語分詞測評(The SecondInternational Chinese Word Segmentation Bakeoff)發布的國際中文分詞測評標準,對不同軟體進行了速度和準確率測試。
  • NLP 中文分詞工具的使用嘗試
    本文將對三種中文分詞工具進行使用嘗試,這三種工具分別為哈工大的 LTP,結巴分詞以及北大的 pkuseg。首先我們先準備好環境,即需要安裝三個模塊:pyltp, jieba, pkuseg 以及 LTP 的分詞模型文件 cws.model。
  • NLP三種中文分詞工具的對比使用
    本文將對三種中文分詞工具進行使用嘗試,這三種工具分別為哈工大的LTP,結巴分詞以及北大的pkuseg。首先我們先準備好環境,即需要安裝三個模塊:pyltp, jieba, pkuseg以及LTP的分詞模型文件cws.model。
  • 詞雲可視化——中文分詞與詞雲製作
    同學們都是80、90後的年輕人更有創新意識,學習也快,特別是小技巧和工具的掌握。我特別強調工具的應用,因為同學們都是文科背景,coding的能力不是我們的強項,學會和掌握最好最適合的現成軟體工具是我的指導思想。數據可視化興趣小組的參與同學熱情很高,特別是高年級同學傳幫帶,象談和、德凱、若晨等同學成為小組的主要指導教師。
  • FoolNLTK:可能是目前最準的中文分詞工具 | 軟體推介
    FoolNLTK 是一個中文處理工具包,可能不是最快的開源中文分詞,但很可能是最準的開源中文分詞
  • 小米開源NLP分詞工具
    近日,小米NLP團隊開源了其分詞工具minlp-tokenizer,該分詞工具支持細粒度和
  • 分詞|Python最好的中文分詞庫
    jieba庫最出名的功能就是中文分詞,在jieba中提供了三種常用的分詞模式:精確模式:將句子按照最精確的方法進行切分,適合用於進行文本分析;全模式:將句子當中所有可以成詞的詞語都掃描出來,分詞速度很快但容易產生歧義;搜尋引擎模式:在精確模式分詞的基礎上,將長的句子再次進行切分,提高召回率,適用於搜尋引擎的分詞。
  • R語言中文分詞包jiebaR介紹與安裝
    工具)協助的。小編嘗試單獨下載rstool但因其太大沒有成功,嘗試了下面的方式並成功安裝了jiebaR中文分詞包。第三步    install.packages(「jiebaR」)介紹:"結巴"中文分詞包,支持最大概率法(Maximum Probability),隱式馬爾科夫模型(Hidden Markov Model),索引模型(QuerySegment),混合模型(MixSegment)四種分詞模式,同時有詞性標註,關鍵詞提取,文本
  • 中文自然語言處理開放任務介紹、數據集、當前最佳結果分享
    § 如果中文是目標 (target) 語言, 則使用字符級別 {1,2,3,4}-gram匹配。    § 當只有1條人工參考翻譯譯文時使用Bleu-n4r1評估。    o 標準Bleu有很多重要的變種:    § 大小寫敏感 vs.
  • 最全的中文語言處理數據集、平臺和工具!
    資源整理了文本分類、實體識別&詞性標註、搜索匹配、推薦系統、指代消歧、百科數據、預訓練詞向量or模型、中文完形填空等大量數據集,中文數據集平臺和NLP工具等。(包括地點、機構、人物)    https://github.com/InsaneLife/ChineseNLPCorpus/tree/master/NER/MSRA    SIGHAN Bakeoff 2005:一共有四個數據集,包含繁體中文和簡體中文,下面是簡體中文分詞數據。