OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  Stanza 斯坦福推出的多语言自然语言处理工具库

Stanza 斯坦福推出的多语言自然语言处理工具库

 
  bind ·  2026-03-11 07:16:51 · 3 次点击  · 0 条评论  

Stanza:一个支持多种人类语言的 Python NLP 库

斯坦福 NLP 小组的官方 Python NLP 库。它支持在 60 多种语言上运行各种精确的自然语言处理工具,并允许从 Python 访问 Java 版斯坦福 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 Zhang (@yuhaozhang) 和 Yuhui Zhang (@yuhui-zh15) 完成,并得到了 Jason Bolton (@j38)、Tim Dozat (@tdozat) 和 John Bauer (@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 Issue Tracker。在创建新问题之前,请务必搜索可能解决您问题的现有问题,或访问我们网站上的常见问题(FAQ)页面

为 Stanza 做贡献

我们欢迎社区以错误修复 🛠️ 和功能增强 💡 的形式为 Stanza 做出贡献!如果您想贡献,请先阅读我们的贡献指南

安装

pip

Stanza 支持 Python 3.6 或更高版本。我们建议您通过 Python 包管理器 pip 安装 Stanza。要安装,只需运行:

pip install stanza

这应该也能帮助解决 Stanza 的所有依赖项,例如 PyTorch 1.3.0 或更高版本。

如果您当前安装了旧版本的 stanza,请使用:

pip install stanza -U

Anaconda

要通过 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 交互式解释器中运行您的第一个 Stanza 管道,只需按照以下步骤操作:

>>> import stanza
>>> stanza.download('en')       # 可选:预下载英文模型(如果需要,管道可以自动下载)
>>> nlp = stanza.Pipeline('en') # 这将设置一个默认的英文神经管道
>>> 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)  # 可选:预下载英文模型(如果需要,管道可以自动下载)
>>> nlp = stanza.Pipeline('en')             # 这将设置一个默认的英文神经管道
>>> doc = nlp("Barack Obama was born in Hawaii. He was elected president in 2008.")
>>> doc.sentences[0].print_dependencies()

最后一条命令将打印输入字符串(或 Stanza 中表示的 Document)中第一句的单词,以及该句 Universal Dependencies 解析中支配该词的索引(其“头”),以及单词之间的依存关系。输出应如下所示:

('Barack', '4', 'nsubj:pass')
('Obama', '1', 'flat')
('was', '4', 'aux:pass')
('born', '0', 'root')
('in', '6', 'case')
('Hawaii', '4', 'obl')
('.', '4', 'punct')

更多详情请参阅我们的入门指南

访问 Java 版斯坦福 CoreNLP 软件

除了神经管道,本软件包还包含一个官方封装器,用于通过 Python 代码访问 Java 版斯坦福 CoreNLP 软件。

需要一些初始设置步骤:

  • 下载斯坦福 CoreNLP 以及您希望使用的语言的模型
  • 将模型 jar 文件放入分发文件夹中
  • 通过设置 CORENLP_HOME 环境变量告诉 Python 代码斯坦福 CoreNLP 的位置(例如,在 *nix 系统中):export CORENLP_HOME=/path/to/stanford-corenlp-4.5.3

我们在文档中提供了全面的示例,展示了如何通过 Stanza 使用 CoreNLP 并从中提取各种注释。

在线 Colab 笔记本

为了帮助您入门,我们还在 demo 文件夹中提供了交互式 Jupyter 笔记本。您也可以在 Google Colab 上打开这些笔记本并交互式运行它们。要查看所有可用的笔记本,请按照以下步骤操作:

  • 访问 Google Colab 网站
  • 导航到 文件 -> 打开笔记本,并在弹出菜单中选择 GitHub
  • 请注意,您不需要授予 Colab 访问您 GitHub 帐户的权限
  • 在搜索栏中输入 stanfordnlp/stanza,然后按回车键

神经管道的训练模型

我们目前为所有 Universal Dependencies v2.8 树库提供模型,以及为几种广泛使用的语言提供 NER 模型。您可以在此处找到下载和使用这些模型的说明

批处理以最大化管道速度

为了最大化速度性能,必须对文档批次运行管道。逐个句子运行 for 循环会非常慢。目前最好的方法是将文档连接在一起,每个文档之间用空行分隔(即两个换行符 \n\n)。分词器会将空行识别为句子分隔符。我们正在积极改进多文档处理。

训练您自己的神经管道

本库中的所有神经模块都可以使用您自己的数据进行训练。分词器、多词标记(MWT)扩展器、词性/形态特征标注器、词形还原器和依存解析器需要 CoNLL-U 格式的数据,而 NER 模型需要 BIOES 格式。目前,我们不支持通过 Pipeline 接口进行模型训练。因此,要训练您自己的模型,您需要克隆此 git 仓库并从源码运行训练。

有关如何训练和评估您自己模型的详细分步指导,请访问我们的训练文档

许可证

Stanza 根据 Apache License, Version 2.0 发布。更多详情请参见 LICENSE 文件。

3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 34 ms
Developed with Cursor