7.1.14. 斯坦福-StanfordNLP¶
适用于多种人类语言的 Python NLP 库 https://github.com/stanfordnlp/stanfordnlp
斯坦福 NLP 集团的官方 Python NLP 库。 它包含用于运行 CoNLL 2018 共享任务的最新完全神经管道以及访问 Java Stanford CoreNLP 服务器的软件包。 有关详细信息,请访问我们的官方网站.
7.1.14.1. 参考¶
如果您使用我们的神经管道,包括标记器,多字令牌扩展模型,解释器,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 共享任务系统不同。 标记器,变形器,形态特征和多字词系统是共享任务代码的清理版本,但在竞争中我们使用Tensorflow 版本 )Tim Dozat的标记器和解析器,已在 PyTorch 中大致复制(尽管与原始版本有一些偏差)。
如果您使用 CoreNLP 服务器,请引用 CoreNLP 软件包和相应模块如此处(“引用斯坦福大学” CoreNLP 在论文中“)。 CoreNLP 客户端主要由Arun Chaganty撰写,Jason Bolton率先将这两个项目合并在一起。
7.1.14.3. 安装¶
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 .
7.1.14.4. 运行 StanfordNLP¶
7.1.14.4.1. 神经管道入门¶
要运行您的第一个 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 解析中管理它的单词的索引(它的“头”),以及单词之间的依赖关系。 输出应该是这样的:
('Barack', '4', 'nsubj:pass')
('Obama', '1', 'flat')
('was', '4', 'aux:pass')
('born', '0', 'root')
('in', '6', 'case')
('Hawaii', '4', 'obl')
('.', '4', 'punct')
Note: 如果你遇到像’OSError:[Errno 22]无效的参数`这样的问题,你很可能会受到已知 Python 问题的影响,我们建议使用 Python 3.6.8 或更高版本以及 Python 3.7.2 或更高版本。
我们还提供了一个多语言演示脚本,演示了如何使用除英语之外的其他语言的 StanfordNLP,例如中文(传统)
python demo/pipeline_demo.py -l zh
有关详细信息,请参阅我们的入门指南。
7.1.14.4.2. 访问 Java Stanford CoreNLP 服务器¶
除了神经管道,该项目还包括一个官方包装器,用于使用 Python 代码访问 Java Stanford CoreNLP 服务器。
有一些初始设置步骤。
Download Stanford CoreNLP and models for the language you wish to use.
将模型罐放入分发文件夹中
告诉 Stanford CoreNLP 所在的 python 代码:
export CORENLP_HOME=/path/to/stanford-corenlp-full-2018-10-05
We provide another demo script that shows how one can use the CoreNLP client and extract various annotations from it.
7.1.14.4.4. 批量管理以最大化管道速度¶
要最大限度地提高速度性能,必须在批量文档上运行管道。
一次在一个句子上运行 for 循环将非常缓慢。
此时最好的方法是将文档连接在一起,每个文档用空行分隔(即两个换行符\n\n\n
)。
标记器将空行识别为句子中断。 我们正在积极致力于改进多文档处理。
7.1.14.5. 训练自己的神经管道¶
该库中的所有神经模块,包括标记器,多字令牌(MWT)扩展器,POS
/形态特征标记器,变形器和依赖解析器,都可以使用您自己的`CoNLL-U <https://universaldependencies.org/format.html>`__格式数据进行训练。
目前,我们不支持通过Pipeline
界面进行模型培训。
因此,要训练自己的模型,您需要克隆此 git 存储库并从源设置。
有关如何培训和评估您自己的模型的详细分步指导,请访问我们的培训文档.