近日,小米開源了其自然語言處理平臺 MiNLP 的中文分詞功能,具備分詞效果好、輕量級、詞典可定製、多粒度切分以及呼叫更便捷等特點。
在自然語言處理任務中,除了模型之外,底層的資料處理也是非常重要的。在語料預處理階段,分詞作為其中一個環節,其作用也是非常重要,但也受不同語言的限制,因而採取的方法有所不同,如中文和英文。中文分詞是將一個漢字序列進行切分,得到一個個單獨的詞,如「我住在朝陽區」,分詞後的結果為「我 / 住在 / 朝陽區」。如果分詞效果不好的話,可能會出現其他情況,比較極端的結果是全部分錯「我住 / 在朝 / 陽區」。分詞效果好不好對資訊檢索、實驗結果影響很大,同時分詞的背後涉及各種各樣的演算法實現。就中、英文而言,中文分詞與英文分詞有很大的不同,對英文而言,詞與詞之間都有空格隔開,一個單詞就是一個詞,而漢語是以字為基本的書寫單位,詞語之間沒有明顯的區分標記,需要人為切分。現階段也出現了很多分詞演算法:如基於規則的、基於統計的等,也有一些比較好的分詞工具如 jieba、Hanlp、THULAC 等。此外還存在著一些線上分詞工具,其分詞效果也不錯。國內一些科技大廠也早早投入到自然語言處理相關領域,如百度 NLP、阿里雲 NLP 等。就在近日,小米 AI 實驗室 NLP 團隊開發的小米自然語言處理平臺 MiNLP 現已開源了中文分詞功能。目前,MiNLP 平臺已經具備詞法、句法、語義等數十個功能模組,後續將陸續開源詞性標註、命名實體識別、句法分析等功能。其致力於打造功能強大、效果領先的 NLP 工具集。MiNLP 從去年 2.0 版本的兩大功能模組(基礎演算法、語義理解)已經上升到 3.0 版本四大功能模組,在基礎演算法、語義理解的基礎上增加了內容理解和輿情分析模組。新的模組可以幫助系統更好地結合上下文理解互動內容,提高識別的準確性。目前,小米自然語言處理平臺 MiNLP 每天輸出服務 80 億次。MiNLP-Tokenizer 是小米 AI 實驗室 NLP 團隊自研的中文分詞工具,基於深度學習序列標註模型實現,在公開測試集上取得了 SOTA 效果。其具備以下特點:分詞效果好:基於深度學習模型在大規模語料上進行訓練,粗、細粒度在 SIGHAN 2005 PKU 測試集上的 F1 分別達到 95.7% 和 96.3%;
輕量級模型:精簡模型引數和結構,模型僅有 20MB;
詞典可定製:靈活、方便的干預機制,根據使用者詞典對模型結果進行干預;
多粒度切分:提供粗、細粒度兩種分詞規範,滿足各種場景需要;
呼叫更便捷:一鍵快速安裝,API 簡單易用。
pip install minlp-tokenizer
適用環境:Python 3.5~3.7,TensorFlow>=1.15,<2。from minlptokenizer.tokenizer import MiNLP
Tokenizertokenizer = MiNLPTokenizer(granularity='fine') # fine:細粒度,coarse:粗粒度,預設為細粒度
print(tokenizer.cut('今天天氣怎麼樣?'))
from minlptokenizer.tokenizer import MiNLP
Tokenizertokenizer = MiNLPTokenizer(['word1', 'word2'], granularity='fine') #使用者自定義干預詞典傳入
from minlptokenizer.tokenizer import MiNLP
Tokenizertokenizer = MiNLPTokenizer('/path/to/your/lexicon/file', granularity='coarse') # 建構函式的引數為使用者詞典路徑
在 lexicon 資料夾下預設已經有兩個詞典「chengyu.txt」、「default.txt」:在檔案「chengyu.txt」中,有 8500 多個成語,基本上都是四字成語,示例如下所示:在檔案「default.txt」中,有 150 個詞,基本上為公司名稱及網站名稱,示例如下所示:其實早在 11 月 5 日 2020 小米開發者大會上,小米集團副總裁、集團技術委員會主席崔寶秋就釋出了小米自然語言處理平臺 MiNLP 平臺開源計劃。現在,MiNLP 的分詞功能已經開源,接下來可以期待一下詞性標註、命名實體識別、句法分析等功能的開源。據 2020 小米開發者大會上的訊息,詞性標註功能將於明年一季度開源,命名實體識別功能將於明年二季度開源,語義相關功能將於明年三季度開源。MiNLP 不同功能模組,將按計劃逐漸開源。