中文NLP那些事系列(1)

最近拜读郑捷的《NLP汉语自然语言处理原理与实践》,其中涉及到中文文本处理的工具模块,并重点介绍了哈工大的FTP工具包与斯坦福的stanfordNLP工具包。

这两个工具包包含:中文分词、词性标注、命名实体识别、句法依存分析等功能,在处理中文文本方面直接调用的话非常方便。

但是该书的编程环境是windows10+python2.7,因此书中许多代码以及工具包的安装方式移植到笔者的电脑(windows10 + python3.5)总是莫名其妙地出现一些问题,因而我又大费周章地从网上找了许多资料来填坑。

果然,尽信书不如无书。

书中安装FLP3.3版本使用指令pip install pyltp,但是一直报错显示:

《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

后来发现是版本问题(pyltp最新版本存在兼容性问题)

改用以下方式安装

set STATICBUILD=true && pip install pyltp==0.1.9.1

(set STATICBUILD=true安装依赖包)

安装成功。

值得一提的是,pyltp是用C++开发的,因此在安装pyltp之前需要先安装microsoft visual studio C++编译器 ,本文下载的2017社区版:

下载 | IDE、Code 和 Team Foundation Server | Visual Studiowww.visualstudio.com

详情参考:

Python3.6.3中pyltp的安装错误总结 – CSDN博客blog.csdn.net
《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

安装成功之后,还需要下载相应的模型文件。

下载链接:

HIT-SCIR/pyltpgithub.com《中文NLP那些事系列(1)》

这里安装的pyltp版本:0.1.9,对应LTP版本: 3.3.2, 对应模型版本:3.3.1

《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

下载模型文件之后,将模型文件ltp_data_v3.3.1.zip解压到本地文件中:

《中文NLP那些事系列(1)》

其中cws.model是中文分词模块,pos.model是词性标注模块,parser.model是句法解析模块。

下面开始尝试用pyltp来处理中文文本吧!

新建一个pyltpDemo.py文件中:

《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

其中model_path是cws.model的本地路径。

分词的结果在输出的第二行:

《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

可以看到这里面的分词粒度过细,“解空间树”、“深度优先”、“解空间”等词语被分开了,这里人为替换一下:

《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

分词的结果为:

《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》 可以看到专属名词被保留了

接下来进行词性标注的工作:

《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

这里需要注意的是:

(1)词性标注需要实现对文本进行分词处理,生成词语列表,再进行词性标注;

(2)导入Postagger包;

《中文NLP那些事系列(1)》

(3)导入pos.model的本文路径。

最终生成的词性标注结果:

《中文NLP那些事系列(1)》

《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

接下来就是stanfordCoreNLP接口的使用了,同样的stanfordCoreNLP是基于java开发的,因此在安装stanfordCoreNLP之前,先安装JDK,而且JDK版本必须是1.8+。JDK的安装这里就不详述了,网上的教程实在是太多了,无非是官网下载、安装、环境变量这些事儿。

剩下的就是安装stanfordCoreNLP:

这里我选择了一个超级简洁的法子,不同于书中的调用JAVA命令行,也不同于NLTK包中的stanford包,而是直接安装stanfordCoreNLP:

pip install stanfordcorenlp

这个是使用python对stanfordCoreNLP的封装,可以直接安装stanfordCoreNLP并可以直接在python中调用。

Lynten/stanford-corenlpgithub.com《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

当然了这里需要去stanfordNLP官网去下载Stanford CoreNLP的模型文件以及中文处理的模型文件。下载地址在上面的链接里都可以找到。

《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

将Stanford CoreNLP压缩包解压到本地:

《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

然后将中文处理的模型文件放到上面的文件夹中即可。

《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

安装完毕之后,用python调用一下看看:

《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

这里StanfordCoreNLP需要输入两个变量:

第一个是Stanford CoreNLP解压文件夹的路径;

第二个lang=”zh”,表示中文的意思。

可以看到一共有 分词(word_tokenize)、词性标注(pos_tag)、命名实体识别(ner)、句法解析(parse)、句法依存分析(dependency_parse)这几个较为常用的功能。

最终的结果:

《中文NLP那些事系列(1)》
《中文NLP那些事系列(1)》

    原文作者:浮华灬沫沫
    原文地址: https://zhuanlan.zhihu.com/p/35811856
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞