❶ 支持53种语言预训练模型,斯坦福发布全新NLP工具包StanfordNLP
Stanford NLP 团队近日推出了一款全新的自然语言处理工具包 StanfordNLP,该工具包涵盖了 53 种语言的预训练模型,并支持 Python 3.6 及以上版本。它基于 PyTorch 构建,提供了完整的文本分析管道,包括分词、词性标注、词形归并和依存关系解析,并且还提供了与 CoreNLP 的 Python 接口。
该工具包整合了斯坦福团队在 CoNLL 2018 Shared Task on Universal Dependency Parsing 中使用的软件包,以及 Stanford CoreNLP 的官方 Python 接口。StanfordNLP 不仅提供了 CoreNLP 的功能,还增加了一系列工具,可以将文本字符串转换为句子和单词列表,生成单词的基本形式、词性和形态特征,以及适用于 70 余种语言的句法结构。
StanfordNLP 采用高度准确的神经网络构建,允许用户使用自己的标注数据进行高效训练和评估。这些模块基于 PyTorch 构建。
以下是关于 StanfordNLP 的更多详细信息:
论文:Universal Dependency Parsing from Scratch
论文地址:nlp.stanford.e/pubs/q...
依存关系解析是自然语言处理系统中用于语义作用标记、关系提取和机器翻译的重要部分。然而,大多数研究已经将依赖解析单独处理,并且很大程度上忽略了为解析器准备相关数据的上游 NLP 组件,例如标记器和词形化器。实际上,这些上游系统仍然远非完美。
为此,研究者构建了一个 raw-text to CoNLL-U 管道系统,该系统执行 Shared Task 所需的所有任务。利用深度学习,该管道在每个相互关联的任务阶段中都实现了有竞争力的性能:分词、句子和词分割、词性(POS)/形态特征(UFeats)标记、词形归并,最后是依存关系解析。
主要结果如表 1 所示。当对所有 treebank 进行宏观平均时,该系统几乎可以在所有指标上实现竞争性能。此外,当仅在 big-treebanks 上进行评估时,它在多个指标上实现了最佳性能。
设置
StanfordNLP 支持 Python 3.6 及之后版本。推荐从 PyPI 中安装 StanfordNLP。如果已经安装了 pip,运行以下命令:
这有助于解决 StanfordNLP 的所有依赖项,例如 PyTorch 1.0.0 及以上版本。
或者,你还可以从该 git repo 中安装 StanfordNLP,这样你可以更加灵活地基于 StanfordNLP 开发,以及训练自己的模型。运行以下命令:
运行 StanfordNLP
启动神经网络管道
要想运行第一个 StanfordNLP pipeline,只需在 Python 交互式解释器中进行以下步骤:
注意:如果你遇到了 OSError: [Errno 22] Invalid argument 这样的问题,很可能是因为 Python 的问题。推荐使用 Python 3.6.8 及之后版本和 Python 3.7.2 及之后版本。
StanfordNLP 还提供多语言 demo 脚本,展示了如何在非英语语言中使用 StanfordNLP,如繁体中文。
demo 地址:github.com/stanfordnlp/...
详见:stanfordnlp.github.io/s...
除了神经网络管道,该项目还包括一个官方 wrapper,允许使用 Python 代码访问 Java Stanford CoreNLP Server。
神经网络管道中的模型
该项目目前提供 CoNLL 2018 Shared Task 中所有 treebank 的模型。模型下载和使用说明详见:
https://stanfordnlp.github.io/stanfordnlp/installation_download.html#models-for-human-languages。
批处理以最大化 Pipeline 速度
为了最大化速度,对文档进行批量处理是必要的。一次仅对一个句子运行 for loop 太慢了。最好的方法是将文档串联到一起,每个文档由空白行分割(即两个换行符)。分词器会将空白行识别为断句。
训练自己的神经网络管道
该库中的所有神经模块,包括分词器、多词标记 (MWT) 扩展器、POS/形态特征标注器、词形归并和依存解析器,都可以用你自己的 CoNLL-U 格式数据来训练。目前,该库还不支持通过 Pipeline 接口训练模型。因此,为了训练你自己的模型,你要 clone 这个 git repo,然后从源代码进行设置。
如果想详细了解如何一步步训练和评估自己的模型,请参考以下链接:
stanfordnlp.github.io/s... Model Training and Evaluation stanfordnlp.github.io/s...