史丹佛 NLP 小組的官方 Python NLP 庫。它支援在 60 多種語言上運行各種準確的自然語言處理工具,並支援從 Python 存取 Java Stanley CoreNLP 軟體。詳細資訊請訪問我們的官方網站。
現已推出新的生物醫學和臨床英語模型包集合,為生物醫學文獻文本和臨床筆記中的句法分析和命名實體識別 (NER) 提供無縫體驗。有關更多信息,請查看我們的生物醫學模型文件頁面。
如果您在研究中使用該函式庫,請引用我們的 ACL2020 Stanza 系統示範論文:
@inproceedings { qi2020stanza ,
title = { Stanza: A {Python} Natural Language Processing Toolkit for Many Human Languages } ,
author = { Qi, Peng and Zhang, Yuhao and Zhang, Yuhui and Bolton, Jason and Manning, Christopher D. } ,
booktitle = " Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics: System Demonstrations " ,
year = { 2020 }
}
如果您使用我們的生物醫學和臨床模型,也請引用我們的 Stanza 生物醫學模型描述文件:
@article { zhang2021biomedical ,
author = { Zhang, Yuhao and Zhang, Yuhui and Qi, Peng and Manning, Christopher D and Langlotz, Curtis P } ,
title = { Biomedical and clinical {E}nglish model packages for the {S}tanza {P}ython {NLP} library } ,
journal = { Journal of the American Medical Informatics Association } ,
year = { 2021 } ,
month = { 06 } ,
issn = { 1527-974X }
}
此儲存庫中神經管道的PyTorch 實現歸功於Peng Qi (@qipeng)、Yuhao Zhu (@yuhaozhang) 和Yuhui Zhu (@yuhui-zh15),並得到Jason Bolton (@j38)、Tim Dozat (@j38) 的幫助。此儲存庫的維護目前由 John Bauer 領導。
如果您透過 Stanza 使用 CoreNLP 軟體,請按照此處所述引用 CoreNLP 軟體包和相應模組(「在論文中引用史丹佛 CoreNLP」)。 CoreNLP 用戶端主要由 Arun Chaganty 編寫,Jason Bolton 帶頭將這兩個項目合併在一起。
如果您使用 CoreNLP 的 Semgrex 或 Ssurgeon 部分,請引用我們關於 Semgrex 和 Ssurgeon 的 GURT 論文:
@inproceedings { bauer-etal-2023-semgrex ,
title = " Semgrex and Ssurgeon, Searching and Manipulating Dependency Graphs " ,
author = " Bauer, John and
Kiddon, Chlo{'e} and
Yeh, Eric and
Shan, Alex and
D. Manning, Christopher " ,
booktitle = " Proceedings of the 21st International Workshop on Treebanks and Linguistic Theories (TLT, GURT/SyntaxFest 2023) " ,
month = mar,
year = " 2023 " ,
address = " Washington, D.C. " ,
publisher = " Association for Computational Linguistics " ,
url = " https://aclanthology.org/2023.tlt-1.7 " ,
pages = " 67--73 " ,
abstract = " Searching dependency graphs and manipulating them can be a time consuming and challenging task to get right. We document Semgrex, a system for searching dependency graphs, and introduce Ssurgeon, a system for manipulating the output of Semgrex. The compact language used by these systems allows for easy command line or API processing of dependencies. Additionally, integration with publicly released toolkits in Java and Python allows for searching text relations and attributes over natural text. " ,
}
若要提出問題、回報問題或請求功能? ,請使用 GitHub 問題追蹤器。在建立新問題之前,請務必搜尋可能解決您問題的現有問題,或造訪我們網站上的常見問題 (FAQ) 頁面。
我們歡迎社區以錯誤修復和增強的形式對 Stanza 做出貢獻!如果您想貢獻,請先閱讀我們的貢獻指南。
Stanza 支援 Python 3.6 或更高版本。我們建議您透過 Python 套件管理器 pip 安裝 Stanza。要安裝,只需運行:
pip install stanza
這也應該有助於解決 Stanza 的所有依賴項,例如 PyTorch 1.3.0 或更高版本。
如果您目前安裝了先前版本的stanza
,請使用:
pip install stanza -U
若要透過 Anaconda 安裝 Stanza,請使用以下 conda 指令:
conda install -c stanfordnlp stanza
請注意,目前透過 Anaconda 安裝 Stanza 不適用於 Python 3.10。對於 Python 3.10,請使用 pip 安裝。
或者,您也可以從這個 git 儲存庫的原始程式碼進行安裝,這將為您在 Stanza 上進行開發提供更大的靈活性。對於此選項,請執行
git clone https://github.com/stanfordnlp/stanza.git
cd stanza
pip install -e .
要運行您的第一個 Stanza 管道,只需在 Python 互動式解釋器中執行以下步驟:
> >> import stanza
> >> stanza . download ( 'en' ) # This downloads the English models for the neural pipeline
> >> nlp = stanza . Pipeline ( 'en' ) # This sets up a default neural pipeline in English
> >> doc = nlp ( "Barack Obama was born in Hawaii. He was elected president in 2008." )
> >> doc . sentences [ 0 ]. print_dependencies ()
如果遇到requests.exceptions.ConnectionError
,請嘗試使用代理:
> >> import stanza
> >> proxies = { 'http' : 'http://ip:port' , 'https' : 'http://ip:port' }
> >> stanza . download ( 'en' , proxies = proxies ) # This downloads the English models for the neural pipeline
> >> nlp = stanza . Pipeline ( 'en' ) # This sets up a default neural pipeline in English
> >> doc = nlp ( "Barack Obama was born in Hawaii. He was elected president in 2008." )
> >> doc . sentences [ 0 ]. print_dependencies ()
最後一個命令將列印輸入字串(或Document
,如 Stanza 中所示)中第一個句子中的單詞,以及在該句子的通用依賴關係解析中控制它的單詞的索引(其“ head”) ,以及單字之間的依賴關係。輸出應如下所示:
('Barack', '4', 'nsubj:pass')
('Obama', '1', 'flat')
('was', '4', 'aux:pass')
('born', '0', 'root')
('in', '6', 'case')
('Hawaii', '4', 'obl')
('.', '4', 'punct')
有關更多詳細信息,請參閱我們的入門指南。
除了神經管道之外,該軟體包還包括一個官方包裝器,用於使用 Python 程式碼存取 Java Stanley CoreNLP 軟體。
有一些初始設定步驟。
CORENLP_HOME
環境變數(例如,在 *nix 中)告訴 Python 程式碼史丹佛 CoreNLP 所在的位置: export CORENLP_HOME=/path/to/stanford-corenlp-4.5.3
我們在文件中提供了全面的範例,展示瞭如何透過 Stanza 使用 CoreNLP 並從中提取各種註釋。
為了幫助您入門,我們還在demo
資料夾中提供了互動式 Jupyter 筆記本。您也可以打開這些筆記本並在 Google Colab 上以互動方式運行它們。若要查看所有可用筆記本,請執行下列步驟:
File
-> Open notebook
,然後在彈出式選單中選擇GitHub
stanfordnlp/stanza
,然後按 Enter我們目前為所有一般依賴關係樹庫 v2.8 提供模型,以及一些廣泛使用的語言的 NER 模型。您可以在此處找到下載和使用這些模型的說明。
為了最大限度地提高速度效能,必須在批次文件上運行管道。一次對一個句子運行 for 迴圈會非常慢。此時最好的方法是將文件連接在一起,每個文檔都以空白行分隔(即兩個換行符nn
)。分詞器會將空白行辨識為句子中斷。我們正在積極致力於改進多文件處理。
該庫中的所有神經模組都可以使用您自己的資料進行訓練。分詞器、多詞分詞(MWT)擴展器、詞性/形態特徵標註器、詞形還原器和依賴解析器需要 CoNLL-U 格式的數據,而 NER 模型需要 BIOES 格式。目前,我們不支援透過Pipeline
介面進行模型訓練。因此,要訓練您自己的模型,您需要複製此 git 儲存庫並從來源執行訓練。
有關如何訓練和評估您自己的模型的詳細逐步指南,請訪問我們的培訓文件。
Stanza 是根據 Apache 許可證 2.0 版發布的。有關更多詳細信息,請參閱許可證文件。