斯坦福 NLP 官方 Python 库
项目描述
StanfordNLP:适用于多种人类语言的 Python NLP 库
斯坦福 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 Qi和Yuhao Zhang,并得到了Tim Dozat和Jason 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 版下发布的。有关更多详细信息,请参阅许可证文件。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。