Skip to main content

斯坦福 NLP 官方 Python 库

项目描述

StanfordNLP:适用于多种人类语言的 Python NLP 库

特拉维斯状态 PyPI 版本

斯坦福 NLP 小组的官方 Python NLP 库。它包含用于从 CoNLL 2018 共享任务运行我们最新的全神经管道以及访问 Java Stanford CoreNLP 服务器的包。详细信息请访问我们的官方网站

参考

如果您在研究中使用我们的神经管道,包括标记器、多词标记扩展模型、词形还原器、POS/形态特征标记器或依赖解析器,请引用我们的 CoNLL 2018 共享任务系统描述论文

@inproceedings{qi2018universal,
 address = {Brussels, Belgium},
 author = {Qi, Peng  and  Dozat, Timothy  and  Zhang, Yuhao  and  Manning, Christopher D.},
 booktitle = {Proceedings of the {CoNLL} 2018 Shared Task: Multilingual Parsing from Raw Text to Universal Dependencies},
 month = {October},
 pages = {160--170},
 publisher = {Association for Computational Linguistics},
 title = {Universal Dependency Parsing from Scratch},
 url = {https://nlp.stanford.edu/pubs/qi2018universal.pdf},
 year = {2018}
}

此存储库中神经管道的 PyTorch 实现归功于Peng QiYuhao Zhang,并得到了Tim DozatJason Bolton的帮助。

此版本与斯坦福的 CoNLL 2018 共享任务系统不同。tokenizer、lemmatizer、形态特征和多词词系统是共享任务代码的清理版本,但在比赛中,我们使用了 Tim Dozat的TensorFlow 版本的标注器和解析器,在 PyTorch 中已大致复制(尽管与原始版本有一些偏差)。

如果您使用 CoreNLP 服务器,请引用此处描述的 CoreNLP 软件包和相应模块(“在论文中引用斯坦福大学 CoreNLP”)。CoreNLP 客户端主要由Arun Chaganty编写,Jason Bolton率先将这两个项目合并在一起。

问题和使用问答

请使用以下渠道进行问题和问题报告。

目的 渠道
使用问答 谷歌集团
错误报告和功能请求 GitHub 问题跟踪器

设置

StanfordNLP 支持 Python 3.6 或更高版本。我们强烈建议您从 PyPI 安装 StanfordNLP。如果您已经安装了 pip,只需运行

pip install stanfordnlp

这也应该有助于解决 StanfordNLP 的所有依赖项,例如PyTorch 1.0.0 或更高版本。

或者,您也可以从这个 git 存储库的源代码安装,这将使您在 StanfordNLP 之上开发和训练您自己的模型时更加灵活。对于此选项,运行

git clone git@github.com:stanfordnlp/stanfordnlp.git
cd stanfordnlp
pip install -e .

运行斯坦福 NLP

神经管道入门

要运行您的第一个 StanfordNLP 管道,只需在 Python 交互式解释器中执行以下步骤:

>>> import stanfordnlp
>>> stanfordnlp.download('en')   # This downloads the English models for the neural pipeline
>>> nlp = stanfordnlp.Pipeline() # 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,正如它在 StanfordNLP 中所表示的那样),以及在该句子的 Universal Dependencies 解析中管理它的单词的索引(它的“head "),以及单词之间的依赖关系。输出应如下所示:

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

注意:如果遇到类似的问题OSError: [Errno 22] Invalid argument,很可能是受到已知 Python 问题的影响,我们建议使用 Python 3.6.8 或更高版本以及 Python 3.7.2 或更高版本。

我们还提供了一个多语言演示脚本,演示如何在英语以外的其他语言中使用 StanfordNLP,例如中文(繁体)

python demo/pipeline_demo.py -l zh

有关更多详细信息,请参阅我们的入门指南

访问 Java Stanford CoreNLP 服务器

除了神经管道,该项目还包括一个官方包装器,用于使用 Python 代码访问 Java Stanford CoreNLP 服务器。

有几个初始设置步骤。

  • 下载您希望使用的语言的Stanford CoreNLP和模型。
  • 将模型罐子放在分发文件夹中
  • 告诉 Python 代码 Stanford CoreNLP 所在的位置:export CORENLP_HOME=/path/to/stanford-corenlp-full-2018-10-05

我们提供了另一个演示脚本,展示了如何使用 CoreNLP 客户端并从中提取各种注释。

神经管道的训练模型

我们目前为 CoNLL 2018 共享任务中的所有树库提供模型。您可以在此处找到下载和使用这些模型的说明。

批处理以最大化管道速度

为了最大限度地提高速度性能,必须在批量文档上运行管道。一次对一个句子运行 for 循环将非常慢。此时最好的方法是将文档连接在一起,每个文档用一个空行分隔(即两个换行符\n\n)。分词器会将空行识别为断句。我们正在积极致力于改进多文档处理。

训练你自己的神经管道

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

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

执照

StanfordNLP 是在 Apache 许可证 2.0 版下发布的。有关更多详细信息,请参阅许可证文件。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

stanfordnlp-0.2.0.tar.gz (119.7 kB 查看哈希

已上传 source

内置分布

stanfordnlp-0.2.0-py3-none-any.whl (158.8 kB 查看哈希

已上传 py3