機器之心報導
作者:陳萍
近日,小米開源了其自然語言處理平臺 MiNLP 的中文分詞功能,具備分詞效果好、輕量級、詞典可定製、多粒度切分以及調用更便捷等特點。
在自然語言處理任務中,除了模型之外,底層的數據處理也是非常重要的。在語料預處理階段,分詞作為其中一個環節,其作用也是非常重要,但也受不同語言的限制,因而採取的方法有所不同,如中文和英文。
中文分詞是將一個漢字序列進行切分,得到一個個單獨的詞,如「我住在朝陽區」,分詞後的結果為「我 / 住在 / 朝陽區」。如果分詞效果不好的話,可能會出現其他情況,比較極端的結果是全部分錯「我住 / 在朝 / 陽區」。分詞效果好不好對信息檢索、實驗結果影響很大,同時分詞的背後涉及各種各樣的算法實現。
就中、英文而言,中文分詞與英文分詞有很大的不同,對英文而言,詞與詞之間都有空格隔開,一個單詞就是一個詞,而漢語是以字為基本的書寫單位,詞語之間沒有明顯的區分標記,需要人為切分。
現階段也出現了很多分詞算法:如基於規則的、基於統計的等,也有一些比較好的分詞工具如 jieba、Hanlp、THULAC 等。此外還存在著一些在線分詞工具,其分詞效果也不錯。
國內一些科技大廠也早早投入到自然語言處理相關領域,如百度 NLP、阿里雲 NLP 等。就在近日,小米 AI 實驗室 NLP 團隊開發的小米自然語言處理平臺 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,
使用 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」:
在文件「chengyu.txt」中,有 8500 多個成語,基本上都是四字成語,示例如下所示:
在文件「default.txt」中,有 150 個詞,基本上為公司名稱及網站名稱,示例如下所示:
其實早在 11 月 5 日 2020 小米開發者大會上,小米集團副總裁、集團技術委員會主席崔寶秋就發布了小米自然語言處理平臺 MiNLP 平臺開源計劃。現在,MiNLP 的分詞功能已經開源,接下來可以期待一下詞性標註、命名實體識別、句法分析等功能的開源。
據 2020 小米開發者大會上的消息,詞性標註功能將於明年一季度開源,命名實體識別功能將於明年二季度開源,語義相關功能將於明年三季度開源。MiNLP 不同功能模塊,將按計劃逐漸開源。
參考連結:
https://dy.163.com/article/FQLS8II705508TBC.html
https://mp.weixin.qq.com/s/wPx4LVEZ3QWL4jm6FNdRSw