❶ 支持53種語言預訓練模型,斯坦福發布全新NLP工具包StanfordNLP
Stanford NLP 團隊近日推出了一款全新的自然語言處理工具包 StanfordNLP,該工具包涵蓋了 53 種語言的預訓練模型,並支持 Python 3.6 及以上版本。它基於 PyTorch 構建,提供了完整的文本分析管道,包括分詞、詞性標注、詞形歸並和依存關系解析,並且還提供了與 CoreNLP 的 Python 介面。
該工具包整合了斯坦福團隊在 CoNLL 2018 Shared Task on Universal Dependency Parsing 中使用的軟體包,以及 Stanford CoreNLP 的官方 Python 介面。StanfordNLP 不僅提供了 CoreNLP 的功能,還增加了一系列工具,可以將文本字元串轉換為句子和單詞列表,生成單詞的基本形式、詞性和形態特徵,以及適用於 70 余種語言的句法結構。
StanfordNLP 採用高度准確的神經網路構建,允許用戶使用自己的標注數據進行高效訓練和評估。這些模塊基於 PyTorch 構建。
以下是關於 StanfordNLP 的更多詳細信息:
論文:Universal Dependency Parsing from Scratch
論文地址:nlp.stanford.e/pubs/q...
依存關系解析是自然語言處理系統中用於語義作用標記、關系提取和機器翻譯的重要部分。然而,大多數研究已經將依賴解析單獨處理,並且很大程度上忽略了為解析器准備相關數據的上游 NLP 組件,例如標記器和詞形化器。實際上,這些上游系統仍然遠非完美。
為此,研究者構建了一個 raw-text to CoNLL-U 管道系統,該系統執行 Shared Task 所需的所有任務。利用深度學習,該管道在每個相互關聯的任務階段中都實現了有競爭力的性能:分詞、句子和詞分割、詞性(POS)/形態特徵(UFeats)標記、詞形歸並,最後是依存關系解析。
主要結果如表 1 所示。當對所有 treebank 進行宏觀平均時,該系統幾乎可以在所有指標上實現競爭性能。此外,當僅在 big-treebanks 上進行評估時,它在多個指標上實現了最佳性能。
設置
StanfordNLP 支持 Python 3.6 及之後版本。推薦從 PyPI 中安裝 StanfordNLP。如果已經安裝了 pip,運行以下命令:
這有助於解決 StanfordNLP 的所有依賴項,例如 PyTorch 1.0.0 及以上版本。
或者,你還可以從該 git repo 中安裝 StanfordNLP,這樣你可以更加靈活地基於 StanfordNLP 開發,以及訓練自己的模型。運行以下命令:
運行 StanfordNLP
啟動神經網路管道
要想運行第一個 StanfordNLP pipeline,只需在 Python 互動式解釋器中進行以下步驟:
注意:如果你遇到了 OSError: [Errno 22] Invalid argument 這樣的問題,很可能是因為 Python 的問題。推薦使用 Python 3.6.8 及之後版本和 Python 3.7.2 及之後版本。
StanfordNLP 還提供多語言 demo 腳本,展示了如何在非英語語言中使用 StanfordNLP,如繁體中文。
demo 地址:github.com/stanfordnlp/...
詳見:stanfordnlp.github.io/s...
除了神經網路管道,該項目還包括一個官方 wrapper,允許使用 Python 代碼訪問 Java Stanford CoreNLP Server。
神經網路管道中的模型
該項目目前提供 CoNLL 2018 Shared Task 中所有 treebank 的模型。模型下載和使用說明詳見:
https://stanfordnlp.github.io/stanfordnlp/installation_download.html#models-for-human-languages。
批處理以最大化 Pipeline 速度
為了最大化速度,對文檔進行批量處理是必要的。一次僅對一個句子運行 for loop 太慢了。最好的方法是將文檔串聯到一起,每個文檔由空白行分割(即兩個換行符)。分詞器會將空白行識別為斷句。
訓練自己的神經網路管道
該庫中的所有神經模塊,包括分詞器、多詞標記 (MWT) 擴展器、POS/形態特徵標注器、詞形歸並和依存解析器,都可以用你自己的 CoNLL-U 格式數據來訓練。目前,該庫還不支持通過 Pipeline 介面訓練模型。因此,為了訓練你自己的模型,你要 clone 這個 git repo,然後從源代碼進行設置。
如果想詳細了解如何一步步訓練和評估自己的模型,請參考以下鏈接:
stanfordnlp.github.io/s... Model Training and Evaluation stanfordnlp.github.io/s...