最近一直在写毕业论文,因为是一个基于语料库分析的题目,所以牵扯到了词性标注、句法分析等等内容。在一番查找之后,决定用 Stanford CoreNLP 来进行处理,一方面是因为这个工具本身功能齐全,另一方面也是因为这个工具比较容易上手使用。在使用过程中慢慢发现目前这一工具的中文教程或者说明还比较不完善,大多数教程都是复制来复制去的几张图,很多需要注意的地方都没有涉及,所以决定写一篇文章来总结一下这个工具主要的使用方法。但是,这并不是一篇讲自然语言处理技术的文章,只是一个使用指南,更适合语言学方向以及单纯需要处理语料的需求,不会涉及原理。
因为我是在 Python 当中使用的,所以这篇文章也会着重于如何在 Python 中使用这个工具,IDE 选择 Jupyter Notebook。另外,也会涉及一点跟 Pandas 的配合问题,但不会展开讲怎么使用 Pandas,NumPy 这类数据分析包。截止到开始写这篇文章的时候 Stanford CoreNLP 更新到了 4.0.0 版本,但是我在使用的时候是 3.9.2,所以文章中可能有这两个版本出现在不同的截图里,但不影响使用。
0. Stanford CoreNLP 是个啥?
是一个自然语言处理工具包。它集成了很多非常实用的功能,包括分词,词性标注,句法分析等等。这不是一个深度学习框架,而是一个已经训练好的模型,实际上可以类比为一个软件。目前市面上有不少类似的工具,结巴分词、清华、哈工大等等,相比之下我个人认为斯坦福这一款有三个值得选择的理由(也可能是优势,但是我没用过其他工具所以没法比):功能足够多,一站式解决所有主流需求;
操作足够方便,放到 Python 里基本上就是一两行代码;
语言支持广泛,目前支持阿拉伯语,中文,英文,法语,德语,西班牙语,做平行语料的对比非常方便。
Stanford CoreNLP 本身是 Java 写的,提供了 Server 的方式进行交互,可以很方便地在Python 中使用。
官方网站:https://stanfordnlp.github.io/CoreNLP/stanfordnlp.github.io
这个网站非常非常的有用,虽然很多信息被安排在非常犄角旮旯的地方,但几乎所有问题都可以从这里找到指导。
1. 下载和安装
下载地址就在上面那个官方网站里,打开首页就有下载链接。
这里说一下需要下载什么。中间那个大大的‘Download CoreNLP 4.0.0’是必须要下载的部分,是这个工具的核心。底下那个框里是语言包的下载链接,按需下载即可。核心部分本身包含了英语的处理能力,如果只是用来处理英语语料,那就只点那个红色按钮就可以了,如果还有其它语言需求,或者需要对英语语料做关系提取等更多处理,那就下载相应的语言包。
下载之后核心部分是一个压缩包,直接解压缩即可。语言包是 jar 包,需要复制到核心部分的根文件夹下。之后下载工作就告一段落了。
注意:这里一定要确保文件夹路径不含中文,否则之后是读不进去的。
接下来是具体的安装和