斯坦福 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) 的帮助。 @tdozat)和约翰·鲍尔(@AngledLuffa)。该存储库的维护目前由 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 版发布的。有关更多详细信息,请参阅许可证文件。