一、版本检查:python版本依旧是python3.5.2,同时要确保安装的是Java 8及之后版本(Stanford NLP只支持Java 8及之后的版本),也就是肯定系统安装的jdk1.8及以上版本。笔者电脑安装的是jdk1.8.0_161。这里就不说jdk的安装了,本身百度下。 附上jdk1.8连接:https://pan.baidu.com/s/1RltrIesUoEcQvVshsns6Aw
下载以后解压,而后把解压后的nltk-develop文件夹复制到python安装的主路径下,笔者是Anaconda方式安装的python,因此就直接放在了Anaconda3的主目录下,以下:
笔者已经将所需的文件和jar包统一打包好了,下载下来的就是打包好的文件夹“stanfordNLP”,直接将此文件夹复制到Anaconda3的目录下便可(理论上放到别的路径也能够,这个路径最终是要来设置环境变量,这里统一放在Anaconda3目录下是为了更方便的统一管理和维护而已),以下:
五、下面就来开始设置刚刚“stanfordNLP”文件夹下各个文件的环境变量,环境变量都是在系统变量的classpath中来操做。
设置环境变量的目的是为了能随时快速的调用,设置环境变量以后,之后的全部调用都不须要传输绝对路径的参数了。
(1)StanfordSegmenter环境变量的设置
进入“stanfordNLP”文件夹,将stanford-segmenter.jar的绝对路径拷贝到classpath下,分别以下:


注意,每个不一样路径之间要用分号分隔。
(2)slf4j-api.jar加入classpath环境变量。slf4j-api.jar是stanford-segmenter-2015-12-09.zip解压后含有的文件。
同理,将“stanfordNLP”中的slf4j-api.jar的绝对路径加入到classpath中去,以下:

(3)StanfordPOSTagger环境变量的设置
同理,进入“stanfordNLP”文件夹,将stanford-postagger.jar文件的绝对路径添加到classpath中,以下:

(4)StanfordNERTagger环境变量的设置
同理,进入“stanfordNLP”文件夹,将stanford-ner.jar文件的绝对路径添加到classpath中,以下:

(5)将classifiers文件夹也添加入classpath环境变量。classifiers文件夹是从stanford-ner-2015-12-09.zip解压后含有的文件夹,直接复制提取的

(6)将models文件夹添加入classpath环境变量。models文件夹是stanford-postagger-full-2015-12-09.zip解压后含有的文件夹。环境变量以下:

(7)StanfordParser环境变量的设置
同理,进入“stanfordNLP”文件夹,将stanford-parser.jar和stanford-parser-3.6.0-models.jar分别添加到classpath环境变量中去,分别以下:


(8)StanfordNeuralDependencyParser环境变量的设置
同上,进入“stanfordNLP”文件夹,分别将stanford-corenlp-3.6.0.jar和stanford-corenlp-3.6.0-models.jar添加入classpath环境变量,分别以下:


3、测试
因为Stanford NLP工具安装最繁琐,也最容易出问题,因而特别展现对Stanford NLP的测试,全部简短的代码都是在python编辑器中执行的,其它地方也可:
代码以下:
路径:相应路径是笔者前面安装所使用的路径,结合更改成本身电脑的实际路径。只要按照上述步骤将全部环境变量配置了,那么,在全部函数的调用中,函数参数就不用再输入绝对路径了,只须要直接输入相应的文件名便可,函数运行时自会在环境变量的路径下来找该文件,找不到的话就会报错的。
一、分词
(1)中文分词
from nltk.tokenize.stanford_segmenter import StanfordSegmenter
segmenter = StanfordSegmenter(
path_to_sihan_corpora_dict="D:\DevelopmentTools\Anaconda3\stanfordNLP\data\", path_to_model="D:\DevelopmentTools\Anaconda3\stanfordNLP\data\pku.gz", path_to_dict="D:\DevelopmentTools\Anaconda3\stanfordNLP\data\dict-chris6.ser.gz")
str="我在博客园开了一个博客,个人博客名字叫钝学累功。"
result = segmenter.segment(str)
==>运行有错误,未解决
(2)英文分词
from nltk.tokenize import StanfordTokenizer
tokenizer=StanfordTokenizer()
sent="Good muffins cost $3.88\nin New York. Please buy me\ntwo of them.\nThanks."
print(tokenizer.tokenize(sent))
二、命名实体识别
(1)英文命名实体识别
from nltk.tag import StanfordNERTagger
eng_tagger=StanfordNERTagger(model_filename=r'D:\DevelopmentTools\Anaconda3\stanfordNLP\classifiers\english.all.3class.distsim.crf.ser.gz')
print(eng_tagger.tag('Rami Eid is studying at Stony Brook University in NY'.split()))
(2)中文命名实体识别
略
三、词性标注
(1)英文词性标注
from nltk.tag import StanfordPOSTagger
eng_tagger=StanfordPOSTagger(model_filename=r'D:\DevelopmentTools\Anaconda3\stanfordNLP\models\english-bidirectional-distsim.tagger')
print(eng_tagger.tag('What is the airspeed of an unladen swallow ?'.split()))
(2)中文词性标注
from nltk.tag import StanfordPOSTagger
chi_tagger=StanfordPOSTagger(model_filename=r'chinese-distsim.tagger')
result="四川省 成都 信息 工程 大学 我 在 博客 园 开 了 一个 博客 , 我 的 博客 名叫 钝学累功 。 \r\n"
print(chi_tagger.tag(result.split()))
四、句法分析
(1)英文句法分析
from nltk.parse.stanford import StanfordParser
eng_parser=StanfordParser()
print(list(eng_parser.parse("the quick brown for jumps over the lazy dog".split())))
(2)中文句法分析
from nltk.parse.stanford import StanfordParser
chi_parser=StanfordParser()
sent=u'北海 已 成为 中国 对外开放 中 升起 的 一 颗 明星'
print(list(chi_parser.parse(sent.split())))
五、依存句法分析
(1)英文依存句法分析
from nltk.parse.stanford import StanfordDependencyParser
eng_parser=StanfordDependencyParser()
res=list(eng_parser.parse("the quick brown fox jumps over the lazy dog".split()))
for row in res[0].triples():
print(row)
(2)中文依存句法分析
from nltk.parse.stanford import StanfordDependencyParser
chi_parser=StanfordDependencyParser()
res=list(chi_parser.parse(u'四川 已 成为 中国 西部 对外开放 中 升起 的 一 颗 明星'.split()))
for row in res[0].triples():
print(row)
总结,环境变量的设置总的来讲是自由的,可是要设置的便于本身识别和 维护,笔者只是提供了本身的设置方案。只要能正常运行上述测试代码,就表示Stanford NLP和NLTK安装成功了,以后开发能够结合两个工具一块儿使用。。。
参考连接:https://www.jianshu.com/p/4b3c7e7578e6