失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【NLP】Python NLTK结合Stanford NLP工具包进行分词 词性标注 句法分析

【NLP】Python NLTK结合Stanford NLP工具包进行分词 词性标注 句法分析

时间:2021-05-23 14:14:38

相关推荐

【NLP】Python NLTK结合Stanford NLP工具包进行分词 词性标注 句法分析

1 NLTK和StandfordNLP简介

NLTK:由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公开数据集、模型上提供了全面、易用的接口,涵盖了分词、词性标注(Part-Of-Speech tag, POS-tag)、命名实体识别(Named Entity Recognition, NER)、句法分析(Syntactic Parse)等各项 NLP 领域的功能。

Stanford NLP:由斯坦福大学的 NLP 小组开源的 Java 实现的 NLP 工具包,同样对 NLP 领域的各个问题提供了解决办法。斯坦福大学的 NLP 小组是世界知名的研究小组,能将 NLTK 和 Stanford NLP 这两个工具包结合起来使用,那对于自然语言开发者是再好不过的!在 年 Steve Bird 在 NLTK 中加上了对 Stanford NLP 工具包的支持,通过调用外部的 jar 文件来使用 Stanford NLP 工具包的功能。本分析显得非常方便好用。

本文在主要介绍NLTK 中提供 Stanford NLP 中的以下几个功能:

中英文分词: StanfordTokenizer中英文词性标注: StanfordPOSTagger中英文命名实体识别: StanfordNERTagger中英文句法分析: StanfordParser中英文依存句法分析: StanfordDependencyParser,StanfordNeuralDependencyParser

2安装配置过程中注意事项

本文以Python 3.5.2和java version "1.8.0_111"版本进行配置,具体安装需要注意以下几点:

Stanford NLP 工具包需要 Java 8 及之后的版本,如果出错请检查 Java 版本本文的配置都是以 Stanford NLP 3.6.0 为例,如果使用的是其他版本,请注意替换相应的文件名本文的配置过程以 NLTK 3.2 为例,如果使用 NLTK 3.1,需要注意该旧版本中 StanfordSegmenter 未实现,其余大致相同下面的配置过程是具体细节可以参照:http://nlp.stanford.edu/software/

3StandfordNLP必要工具包下载

必要包下载:只需要下载以下3个文件就够了,stanfordNLTK文件里面就是StanfordNLP工具包在NLTK中所依赖的jar包和相关文件

stanfordNLTK:自己将所有需要的包和相关文件已经打包在一起了,下面有具体讲解Jar1.8:如果你本机是Java 8以上版本,可以不用下载了NLTK:这个工具包提供Standford NLP接口

以上文件下载后,Jar如果是1.8的版本可以不用下载,另外两个压缩包下载到本地,解压后拷贝文件夹到你的python安装主路径下,然后cmd进入NLTK下通过python setup.py install即可。后面操作讲路径简单修改即可。(如果不能正常分词等操作,查看python是否是3.2以上版本,java是否是8以后版本,jar环境变量是否配置正确)

StanfordNLTK目录结构如下:(从各个压缩文件已经提取好了,如果读者感兴趣,下面有各个功能的源码文件)

分词依赖:stanford-segmenter.jar、 slf4j-api.jar、data文件夹相关子文件命名实体识别依赖:classifiers、stanford-ner.jar词性标注依赖:models、stanford-postagger.jar句法分析依赖:stanford-parser.jar、stanford-parser-3.6.0-models.jar、classifiers依存语法分析依赖:stanford-parser.jar、stanford-parser-3.6.0-models.jar、classifiers

压缩包下载和源码分析

分词压缩包:StanfordSegmenter和StanfordTokenizer:下载stanford-segmenter--12-09.zip (version 3.6.0)解压获取目录中的 stanford-segmenter-3.6.0.jar 拷贝为 stanford-segmenter.jar和 slf4j-api.jar词性标注压缩包:下载stanford-postagger-full--12-09.zip(version 3.6.0) 解压获取stanford-postagger.jar命名实体识别压缩包:下载stanford-ner--12-09.zip(version 3.6.0),将解压获取stanford-ner.jar和classifiers文件句法分析、句法依存分析:下载stanford-parser-full--12-09.zip(version 3.6.0) 解压获取stanford-parser.jar 和 stanford-parser-3.6.0-models.jar

4StandfordNLP相关核心操作

4.1分词

StanfordSegmenter 中文分词:下载52nlp改过的NLTK包nltk-develop,解压后将其拷贝到你的python目录下,进去E:\Python\nltk-develop采用python编辑器打开setup.py文件,F5运行,输入以下代码:

执行结果

程序解读:StanfordSegmenter 的初始化参数说明:

path_to_jar: 用来定位jar包,本程序分词依赖stanford-segmenter.jar(注: 其他所有 Stanford NLP 接口都有 path_to_jar 这个参数。)path_to_slf4j: 用来定位slf4j-api.jar作用于分词path_to_sihan_corpora_dict: 设定为 stanford-segmenter--12-09.zip 解压后目录中的 data 目录, data 目录下有两个可用模型 pkg.gz 和 ctb.gz 需要注意的是,使用 StanfordSegmenter 进行中文分词后,其返回结果并不是 list ,而是一个字符串,各个汉语词汇在其中被空格分隔开。

StanfordTokenizer 英文分词:相关参考资料

执行结果:

4.2 命名实体识别

StanfordNERTagger 英文命名实体识别

运行结果

StanfordNERTagger 中文命名实体识别

运行结果

4.3 词性标注

StanfordPOSTagger 英文词性标注

运行结果

StanfordPOSTagger中文词性标注

运行结果

4.4 句法分析:参考文献资料

StanfordParser英文语法分析

运行结果

StanfordParser中文句法分析

运行结果

4.5 依存句法分析

StanfordDependencyParser 英文依存句法分析

运行结果

StanfordDependencyParser中文依存句法分析

运行结果

5 句法分析缩写语含义

ROOT:要处理文本的语句

IP:简单从句

NP:名词短语

VP:动词短语

PU:断句符,通常是句号、问号、感叹号等标点符号

LCP:方位词短语

PP:介词短语

CP:由‘的’构成的表示修饰性关系的短语

DNP:由‘的’构成的表示所属关系的短语

ADVP:副词短语

ADJP:形容词短语

DP:限定词短语

QP:量词短语

NN:常用名词

NR:固有名词

NT:时间名词

PN:代词

VV:动词

VC:是

CC:表示连词

VE:有

VA:表语形容词

AS:内容标记(如:了)

VRD:动补复合词

CD: 表示基数词

DT: determiner 表示限定词

EX: existential there 存在句

FW: foreign word 外来词

IN: preposition or conjunction, subordinating 介词或从属连词

JJ: adjective or numeral, ordinal 形容词或序数词

JJR: adjective, comparative 形容词比较级

JJS: adjective, superlative 形容词最高级

LS: list item marker 列表标识

MD: modal auxiliary 情态助动词

PDT: pre-determiner 前位限定词

POS: genitive marker 所有格标记

PRP: pronoun, personal 人称代词

RB: adverb 副词

RBR: adverb, comparative 副词比较级

RBS: adverb, superlative 副词最高级

RP: particle 小品词

SYM: symbol 符号

TO:”to” as preposition or infinitive marker 作为介词或不定式标记

WDT: WH-determiner WH限定词

WP: WH-pronoun WH代词

WP$: WH-pronoun, possessive WH所有格代词

WRB:Wh-adverb WH副词

关系表示

abbrev: abbreviation modifier,缩写

acomp: adjectival complement,形容词的补充;

advcl : adverbial clause modifier,状语从句修饰词

advmod: adverbial modifier状语

agent: agent,代理,一般有by的时候会出现这个

amod: adjectival modifier形容词

appos: appositional modifier,同位词

attr: attributive,属性

aux: auxiliary,非主要动词和助词,如BE,HAVE SHOULD/COULD等到

auxpass: passive auxiliary 被动词

cc: coordination,并列关系,一般取第一个词

ccomp: clausal complement从句补充

complm: complementizer,引导从句的词好重聚中的主要动词

conj : conjunct,连接两个并列的词。

cop: copula。系动词(如be,seem,appear等),(命题主词与谓词间的)连系

csubj : clausal subject,从主关系

csubjpass: clausal passive subject 主从被动关系

dep: dependent依赖关系

det: determiner决定词,如冠词等

dobj : direct object直接宾语

expl: expletive,主要是抓取there

infmod: infinitival modifier,动词不定式

iobj : indirect object,非直接宾语,也就是所以的间接宾语;

mark: marker,主要出现在有“that” or “whether”“because”, “when”,

mwe: multi-word expression,多个词的表示

neg: negation modifier否定词

nn: noun compound modifier名词组合形式

npadvmod: noun phrase as adverbial modifier名词作状语

nsubj : nominal subject,名词主语

nsubjpass: passive nominal subject,被动的名词主语

num: numeric modifier,数值修饰

number: element of compound number,组合数字

parataxis: parataxis: parataxis,并列关系

partmod: participial modifier动词形式的修饰

pcomp: prepositional complement,介词补充

pobj : object of a preposition,介词的宾语

poss: possession modifier,所有形式,所有格,所属

possessive: possessive modifier,这个表示所有者和那个’S的关系

preconj : preconjunct,常常是出现在 “either”, “both”, “neither”的情况下

predet: predeterminer,前缀决定,常常是表示所有

prep: prepositional modifier

prepc: prepositional clausal modifier

prt: phrasal verb particle,动词短语

punct: punctuation,这个很少见,但是保留下来了,结果当中不会出现这个

purpcl : purpose clause modifier,目的从句

quantmod: quantifier phrase modifier,数量短语

rcmod: relative clause modifier相关关系

ref : referent,指示物,指代

rel : relative

root: root,最重要的词,从它开始,根节点

tmod: temporal modifier

xcomp: open clausal complement

xsubj : controlling subject 掌控者

6参考文献和知识扩展

NLTK官方网站NLTK的APINLTK中使用斯坦福中文分词器GitHub上NLTK源码/baiboy/p/nltk1.html/cuixianpeng/article/details/16864785

如果觉得《【NLP】Python NLTK结合Stanford NLP工具包进行分词 词性标注 句法分析》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。