每天呼叫達80億次的小米MiNLP平臺,近期又開源了中文分詞功能

机器之心發表於2020-11-23

近日,小米開源了其自然語言處理平臺 MiNLP 的中文分詞功能,具備分詞效果好、輕量級、詞典可定製、多粒度切分以及呼叫更便捷等特點。


在自然語言處理任務中,除了模型之外,底層的資料處理也是非常重要的。在語料預處理階段,分詞作為其中一個環節,其作用也是非常重要,但也受不同語言的限制,因而採取的方法有所不同,如中文和英文。

中文分詞是將一個漢字序列進行切分,得到一個個單獨的詞,如「我住在朝陽區」,分詞後的結果為「我 / 住在 / 朝陽區」。如果分詞效果不好的話,可能會出現其他情況,比較極端的結果是全部分錯「我住 / 在朝 / 陽區」。分詞效果好不好對資訊檢索、實驗結果影響很大,同時分詞的背後涉及各種各樣的演算法實現。

就中、英文而言,中文分詞與英文分詞有很大的不同,對英文而言,詞與詞之間都有空格隔開,一個單詞就是一個詞,而漢語是以字為基本的書寫單位,詞語之間沒有明顯的區分標記,需要人為切分。

現階段也出現了很多分詞演算法:如基於規則的、基於統計的等,也有一些比較好的分詞工具如 jieba、Hanlp、THULAC 等。此外還存在著一些線上分詞工具,其分詞效果也不錯。

國內一些科技大廠也早早投入到自然語言處理相關領域,如百度 NLP、阿里雲 NLP 等。就在近日,小米 AI 實驗室 NLP 團隊開發的小米自然語言處理平臺 MiNLP 現已開源了中文分詞功能。

每天呼叫達80億次的小米MiNLP平臺,近期又開源了中文分詞功能

專案地址:https://github.com/XiaoMi/MiNLP/tree/main/minlp-tokenizer

目前,MiNLP 平臺已經具備詞法、句法、語義等數十個功能模組,後續將陸續開源詞性標註、命名實體識別、句法分析等功能。其致力於打造功能強大、效果領先的 NLP 工具集。

MiNLP 從去年 2.0 版本的兩大功能模組(基礎演算法、語義理解)已經上升到 3.0 版本四大功能模組,在基礎演算法、語義理解的基礎上增加了內容理解和輿情分析模組。新的模組可以幫助系統更好地結合上下文理解互動內容,提高識別的準確性。

目前,小米自然語言處理平臺 MiNLP 每天輸出服務 80 億次。

MiNLP-Tokenizer 介紹

MiNLP-Tokenizer 是小米 AI 實驗室 NLP 團隊自研的中文分詞工具,基於深度學習序列標註模型實現,在公開測試集上取得了 SOTA 效果。其具備以下特點:

  • 分詞效果好:基於深度學習模型在大規模語料上進行訓練,粗、細粒度在 SIGHAN 2005 PKU 測試集上的 F1 分別達到 95.7% 和 96.3%;

  • 輕量級模型:精簡模型引數和結構,模型僅有 20MB;

  • 詞典可定製:靈活、方便的干預機制,根據使用者詞典對模型結果進行干預;

  • 多粒度切分:提供粗、細粒度兩種分詞規範,滿足各種場景需要;

  • 呼叫更便捷:一鍵快速安裝,API 簡單易用。


安裝過程

安裝過程非常簡單,pip 全自動安裝:

pip install minlp-tokenizer

適用環境:Python 3.5~3.7,TensorFlow>=1.15,<2。

使用 API

from minlptokenizer.tokenizer import MiNLPTokenizertokenizer = MiNLPTokenizer(granularity='fine')  # fine:細粒度,coarse:粗粒度,預設為細粒度print(tokenizer.cut('今天天氣怎麼樣?'))

自定義使用者詞典

透過使用者詞典 List 新增:

from minlptokenizer.tokenizer import MiNLPTokenizertokenizer = MiNLPTokenizer(['word1', 'word2'], granularity='fine') #使用者自定義干預詞典傳入

透過檔案路徑方式新增:

from minlptokenizer.tokenizer import MiNLPTokenizertokenizer = MiNLPTokenizer('/path/to/your/lexicon/file', granularity='coarse')  # 建構函式的引數為使用者詞典路徑

在 lexicon 資料夾下預設已經有兩個詞典「chengyu.txt」、「default.txt」:

每天呼叫達80億次的小米MiNLP平臺,近期又開源了中文分詞功能

在檔案「chengyu.txt」中,有 8500 多個成語,基本上都是四字成語,示例如下所示:

每天呼叫達80億次的小米MiNLP平臺,近期又開源了中文分詞功能

在檔案「default.txt」中,有 150 個詞,基本上為公司名稱及網站名稱,示例如下所示:

每天呼叫達80億次的小米MiNLP平臺,近期又開源了中文分詞功能

其實早在 11 月 5 日 2020 小米開發者大會上,小米集團副總裁、集團技術委員會主席崔寶秋就釋出了小米自然語言處理平臺 MiNLP 平臺開源計劃。現在,MiNLP 的分詞功能已經開源,接下來可以期待一下詞性標註、命名實體識別、句法分析等功能的開源。

據 2020 小米開發者大會上的訊息,詞性標註功能將於明年一季度開源,命名實體識別功能將於明年二季度開源,語義相關功能將於明年三季度開源。MiNLP 不同功能模組,將按計劃逐漸開源。

參考連結:
https://dy.163.com/article/FQLS8II705508TBC.html
https://mp.weixin.qq.com/s/wPx4LVEZ3QWL4jm6FNdRSw

相關文章