Python自然语言处理(二)--NLTK调用Stanford_NLP_Tools完成NLP任务

时间:2022-10-18 18:13:42
原文发表在http://www.pythontip.com/blog/post/10042/ 
------------------------------------------说正题-------------------------------- 
上一篇博文Python自然语言处理(一)介绍了如何利用NLTK自带的函数快速进行NLP任务,适用于对NLP处理要求不高的场景。

如果对NLP的效果有较高要求的话,那些NLTK自带的函数可能就无法满足要求了。

幸好,NLTK可以调用第三方的NLP工具。Stanford NLP Tools 是非常优秀的NLP工具,下面介绍如何在Python中使用它们。

NLTK自带的类支持部分Stanford NLP Tools, 但是我本机测试始终无法运行,不知是Stanford NLP Tools升级的原因还是我电脑的原因。这里利用第三方工具包使用Stanford NLP Tools。

一、使用StanfordNER

首先,需要下载StanfordNER工具包,点这里下载

还需要下载一个第三方工具包Pyner, 点这里下载

下载完成后,依次进行下列操作:

     1. 安装Pyner

          解压下载的Pyner,命令行中将工作目录切换到Pyner文件夹下, 输入命令 :python setup.py install 完成安装

     2. 解压StanfordNER工具包,命令行中将工作目录切换到StanfordNER文件夹下,输入以下命令以服务的方式运行StanfordNER

         命令:java -mx1000m -cp stanford-ner.jar edu.stanford.nlp.ie.NERServer -loadClassifier classifiers/english.muc.7class.distsim.crf.ser.gz -port 8080 -outputFormat inlineXML

Python自然语言处理(二)--NLTK调用Stanford_NLP_Tools完成NLP任务

   3.上面两步正确完成之后,下面可以很方便的用python调用StanfordNER了。

     Python自然语言处理(二)--NLTK调用Stanford_NLP_Tools完成NLP任务

二、使用StanfordParser

首先,需要下载 StanfordParser,测试支持1.6.4版本,其它版本未测,点此下载

还需要安装第三方工具包Stanford-parser-python, 点此下载

注意:Stanford-parser-python需要用到另一个工具包JPype,如果尚未安装,需要先安装JPype.  安装教程

下面配置Stanford-parser-python

1. 在工程下新建python包,将stanford-parser-python解压后拷贝进去,我的例子中包名为stanford-parser

Python自然语言处理(二)--NLTK调用Stanford_NLP_Tools完成NLP任务

2. 打开parser.py文件,进行配置

    Python自然语言处理(二)--NLTK调用Stanford_NLP_Tools完成NLP任务

在打开的文件中找到startJvm函数,将其修改为上图样式

其中,stanford_parser_home配置为stanford parser在你本机的所在目录

Python自然语言处理(二)--NLTK调用Stanford_NLP_Tools完成NLP任务

将此Parser的构造函数红线标注的部分修改为:

self.pcfg_model_fname = "%s/englishPCFG.ser.gz" % stanford_parser_home

现在终于配置完成,可以使用StanfordParser了

Python自然语言处理(二)--NLTK调用Stanford_NLP_Tools完成NLP任务

执行结果:

Python自然语言处理(二)--NLTK调用Stanford_NLP_Tools完成NLP任务

三、使用StanfordPosTag

StanfordParser同时进行了PosTag操作,直接可以利用StanfordParser进行PosTag。

按照二的步骤配置好StanfordParser之后,很容易进行PosTag

下面自定义PosTag方法:

Python自然语言处理(二)--NLTK调用Stanford_NLP_Tools完成NLP任务

执行结果:

Python自然语言处理(二)--NLTK调用Stanford_NLP_Tools完成NLP任务