用MeCab打造一套實用的中文分詞系統

jopen 9年前發布 | 34K 次閱讀 中文分詞

MeCab是一套日文分詞(形態分析)和詞性標注系統(Yet Another Part-of-Speech and Morphological Analyzer), rick曾經在這里分享過MeCab的官方文檔中文翻譯: 日文分詞器 Mecab 文檔,這款日文分詞器基于條件隨機場打造,有著諸多優點,譬如代碼基于C++實現,基本內嵌CRF++代碼,詞典檢索的算法和數據結構均使用雙數組Double-Array,性能優良,并通過SWIG提供多種語言調用接口,可擴展性和通用性都非常不錯:

mecab (http://mecab.sourceforge.net/) 是奈良先端科學技術大學院的工藤拓開發的日文分詞系統, 該作者寫過多個 machine learning 方面的軟件包, 最有名的就是 CRF++, 目前該作者在 google@Japan 工作。

mecab 是基于CRF 的一個日文分詞系統,代碼使用 c++ 實現, 基本上內嵌了 CRF++ 的代碼, 同時提供了多種腳本語言調用的接口(python, perl, ruby 等).整個系統的架構采用通用泛化的設計,用戶可以通過配置文件定制CRF訓練中需要使用的特征模板。 甚至, 如果你有中文的分詞語料作為訓練語料,可以在該架構下按照其配置文件的規范定制一個中文的分詞系統。

日文NLP 界有幾個有名的開源分詞系統, Juman, Chasen, Mecab. Juman 和 Chasen 都是比較老的系統了, Mecab 系統比較新, 在很多方面都優于 Juman 和 Chasen, mecab 目前開發也比較活躍。 Mecab 雖然使用 CRF 實現, 但是解析效率上確相當高效, 據作者的介紹, Mecab 比基于 HMM 的 Chasen 的解析速度要快。 筆者在一臺 Linux 機器上粗略測試過其速度,將近達到 2MB/s, 完全達到了工程應用的需求, 該系統目前在日文 NLP 界被廣泛使用。

我們曾經介紹過一個非常初級的CRF中文分詞實現方案:中文分詞入門之字標注法4, 基于CRF++實現了一個Toy級別的CRF中文分詞系統,但是還遠遠不夠。在仔細看過這篇日文分詞系統MeCab的中文文檔并親測之后,不得不贊這真是 一個理想的CRF分詞系統,除了上述所說的優點之外,在使用上它還支持Nbest輸出,多種輸出格式,全切分模式,系統詞典和用戶詞典定制等等,難怪這套 分詞系統在日本NLP界被廣泛使用。

MeCab的諸多優點以及它的通用性一直深深吸引著我,但是除了日文資料,相關的中文或英文資料相當匱乏,曾經嘗試過基于MeCab的中文翻譯文檔 以及代碼中測試用例中的例子來訓練一套中文分詞系統,但是第一次以失敗告終。這幾天,由于偶然的因素又一次撿起了MeCab,然后通過Google及 Google翻譯發現了這篇日文文章《MeCabで中國語の形態素解析(分かち書き)をしてみる》,雖其是日語所寫,但是主旨是通過MeCab構造一套中文(貌似是繁體)形態(中文分詞+詞性標注)分析系統,給了我很大的幫助。所以接下來,我會基于這篇文章的提示以及rick翻譯文檔中第八節“從原始詞典/語料庫做參數估計”的參考,同時結合backoff2005中微軟研究院的中文分詞語料來訓練一套極簡的中文分詞系統,至于MeCab的相關介紹及安裝使用請參考 日文分詞器 Mecab 文檔,這里不再贅述。以下是我在Mac OS下的操作記錄,同理可推廣制Linux下,至于Windows下,請自行測試。一些中文分詞的背景知識可參考這里過往的相關文章: 中文分詞

剩下內容:http://www.52nlp.cn/%E7%94%A8mecab%E6%89%93%E9%80%A0%E4%B8%80%E5%A5%97%E5%AE%9E%E7%94%A8%E7%9A%84%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D%E7%B3%BB%E7%BB%9F

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!