首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

编译:浅浅

出品:ATYUN订阅号

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之上进行开发并训练自己的模型。对于此选项,请运行:

运行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

这么好看怎么办

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190131B0X16E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券