论文地址://p1-tt.byteimg.com/origin/pgc-image/b3b76fe8174e4ce7b2fcef5b7240dc9b.jpg" style="width: 650px;">
表 1:测试集上的评估结果(F1),仅适用于所有 treebank 及大型 treebank 测试集。对于所有指标上的每一组结果,研究者将其与来自参照系统的结果进行对比。参照系统是指在那个指标上当前性能最好的系统。
安装和使用
设置
StanfordNLP 支持 Python 3.6 及之后版本。推荐从 PyPI 中安装 StanfordNLP。如果已经安装了 pip,运行以下命令:
pip install stanfordnlp\n
这有助于解决 StanfordNLP 的所有依赖项,例如 PyTorch 1.0.0 及以上版本。
或者,你还可以从该 git repo 中安装 StanfordNLP,这样你可以更加灵活地基于 StanfordNLP 开发,以及训练自己的模型。运行以下命令:
git clone git@github.com:stanfordnlp/stanfordnlp.gitcd stanfordnlp\npip install -e .\n
运行 StanfordNLP
启动神经网络管道
要想运行第一个 StanfordNLP pipeline,只需在 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()\n
最后一个命令将输出输入字符串中第一个句子中的单词,以及在句子的通用依存解析中控制该单词的单词索引、单词之间的依赖关系。输出如下:
('Barack', '4', 'nsubj:pass')\n('Obama', '1', 'flat')\n('was', '4', 'aux:pass')\n('born', '0', 'root')\n('in', '6', 'case')\n('Hawaii', '4', 'obl')\n('.', '4', 'punct')\n
注意:如果你遇到了 OSError: [Errno 22] Invalid argument 这样的问题,很可能是因为 Python 的问题。推荐使用 Python 3.6.8 及之后版本和 Python 3.7.2 及之后版本。
StanfordNLP 还提供多语言 demo 脚本,展示了如何在非英语语言中使用 StanfordNLP,如繁体中文。
demo 地址:https://github.com/stanfordnlp/stanfordnlp/blob/master/demo/pipeline_demo.py
python demo/pipeline_demo.py -l zh\n
详见:https://stanfordnlp.github.io/stanfordnlp/installation_download.html#getting-started
访问 Java Stanford CoreNLP Server
除了神经网络管道,该项目还包括一个官方 wrapper,允许使用 Python 代码访问 Java Stanford CoreNLP Server。
初始设置如下:
下载 Stanford CoreNLP 和你想使用语言的模型。将 model jar 放在分发目录中。在 Python 代码中写明 Stanford CoreNLP 的地址:export CORENLP_HOME=/path/to/stanford-corenlp-full-2018-10-05。该项目提供另一个 demo 脚本,展示如何使用 CoreNLP 客户端以及如何从中提取不同的标注。
demo 地址:https://github.com/stanfordnlp/stanfordnlp/blob/master/demo/corenlp.py
神经网络管道中的模型
该项目目前提供 CoNLL 2018 Shared Task 中所有 treebank 的模型。模型下载和使用说明详见:
https://stanfordnlp.github.io/stanfordnlp/installation_download.html#models-for-human-languages。
批处理以最大化 Pipeline 速度
为了最大化速度,对文档进行批量处理是必要的。一次仅对一个句子运行 for loop 太慢了。最好的方法是将文档串联到一起,每个文档由空白行分割(即两个换行符\\n\\n)。分词器会将空白行识别为断句。目前,研究者正在积极寻求改善多文档处理。
训练自己的神经网络管道
该库中的所有神经模块,包括分词器、多词标记 (MWT) 扩展器、POS/形态特征标注器、词形归并和依存解析器,都可以用你自己的 CoNLL-U 格式数据来训练。目前,该库还不支持通过 Pipeline 接口训练模型。因此,为了训练你自己的模型,你要 clone 这个 git repo,然后从源代码进行设置。
如果想详细了解如何一步步训练和评估自己的模型,请参考以下链接:https://stanfordnlp.github.io/stanfordnlp/training.html
版权声明:CosMeDna所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系删除!
本文链接://www.cosmedna.com/article/124344754.html