首页»行业  »   正文

斯坦福全新NLP工具包StanfordNLP发布,支持53种语言

斯坦福全新NLP工具包StanfordNLP发布,支持53种语言

StanfordNLP是斯坦福团队在CoNLL 2018 Shared Task on Universal Dependency Parsing中使用的软件包的组合,以及Stanford CoreNLP软件的官方Python接口。除了它从CoreNLP继承的功能外,它还包含将一串文本转换为句子和单词列表,生成这些单词的基本形式,词性,形态特征,以及一种被设计成在70多种语言之间并行的句法结构。

该软件包采用高度精确的神经网络组件构建,组件支持使用自己的注释数据进行有效的训练和评估。模块构建在PyTorch的顶部。这些模块构建在PyTorch之上。

StanfordNLP的特点:

  • Python实现的设置工作少;
  • 用于文本分析的完整神经网络管道,包括词语切分,多词标记(MWT)扩展,词形还原,词性(POS)和形态特征标记和依存关系语法分析;
  • 73个treebank中支持53种人类语言的预训练神经模型;
  • 官方维护的接入到CoreNLP的稳定Python接口。

详情:stanfordnlp.github.io/stanfordnlp/

安装

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 .

运行StanfordNLP

启动神经管道

要运行第一个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()

最后一个命令将打印出输入字符串中第一个句子中的单词,以及在该句子的通用依赖关系解析中管理它的单词的索引,以及单词之间的依赖关系。输出应如下所示:

('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以及您希望使用的语言的模型。
  • 将模型jar放入分发文件夹中
  • 向python代码指明Stanford CoreNLP所在的位置:
    export CORENLP_HOME=/path/to/stanford-corenlp-full-2018-10-05

另一个演示脚本演示了如何使用CoreNLP客户端并从中提取各种注释:

github.com/stanfordnlp/stanfordnlp/blob/master/demo/corenlp.py

神经管道的训练模型

目前为CoNLL 2018共享任务中的所有treebank提供模型。你可以在此处找到有关下载和使用这些模型的说明:

stanfordnlp.github.io/stanfordnlp/installation_download.html#models-for-human-languages

批量管理以最大化管道速度

为了最大限度地提高速度性能,必须在多个文档上运行管道。一次只对一个句子执行for循环是非常缓慢的。此时最好的方法是将文档连接在一起,每个文档之间用空行隔开(即两个换行符\n\n)。标记器将把空白行识别为断句。团队正在积极改进多文档处理。

训练自己的神经管道

该库中的所有神经模块,包括tokenzier,多词标记(MWT)扩展器,POS /形态特征标记器,形态特征标记和依存关系语法分析,都可以使用你自己的CoNLL-U格式数据进行训练。目前不支持通过Pipeline界面进行模型训练。因此,要训练自己的模型,需要克隆此git存储库并从源进行设置。

训练和评估自己的模型的详细指导:

stanfordnlp.github.io/stanfordnlp/training.html

论文:

nlp.stanford.edu/pubs/qi2018universal.pdf

欢迎关注ATYUN官方公众号,商务合作及内容投稿请联系邮箱:bd@atyun.com

发表评论