赞
踩
StanfordParser下载地址
下载过后解压压缩包,找到下图中的两个个文件
我们需要的是:
1.stanford-parser.jar
2.stanford-parser-4.2.0-models.jar
3.chinesePCFG.ser.gz
第三个文件我们暂时在文件夹种没有找到。我们将stanford-parser-4.2.0-models.jar
进行解压,发现多出来edu
文件夹,一直点,找到了chinesePCFG.ser.gz
,路径是
.\edu\stanford\nlp\models\lexparser\chinesePCFG.ser.gz
,这样我们需要的三个文件都集齐了!
Stanford NLP是由java开发的,Stanford Parser模型被包含在jar文件中。要访问该模型的最简单的方式是:将该jar文件放到java的CLASSPATH中。
直接pip,干就完了!
#coding=utf-8
import jieba
from nltk.parse import stanford
import os
string = '东京2020年奥运会组委会和国际奥委会达成协议'
#string = 'He met Jenny with flowers'
seg_list = jieba.cut(string, cut_all=False, HMM=True)
seg_str = ' '.join(seg_list)
print(seg_str)
if not os.environ.get('JAVA_HOME'): JAVA_HOME = 'D:/software/java/jdk' os.environ['JAVA_HOME'] = JAVA_HOME # PCFG模型路径 pcfg_path = 'E:/jupyterAnaconda/jar/chinesePCFG.ser.gz' root = 'E:/jupyterAnaconda/jar/' parser_path = root + 'stanford-parser.jar' model_path = root + 'stanford-parser-4.2.0-models.jar' parser = stanford.StanfordParser( path_to_jar=parser_path, path_to_models_jar=model_path, model_path=pcfg_path ) sentence = parser.raw_parse(seg_str) for line in sentence: print(line.leaves()) line.draw()
词性说明
ROOT : 要处理文本的语句 IP : 简单从句 NP : 名词短语 VP : 动词短语 PU : 断句符,通常是句号、问号、感叹号等标点符号 LCP : 方位词短语 PP : 介词短语 CP : 由‘的’构成的表示修饰性关系的短语 DNP : 由‘的’构成的表示所属关系的短语 ADVP : 副词短语 ADJP : 形容词短语 DP : 限定词短语 QP : 量词短语 NN : 常用名词 NT : 时间名词 PN : 代词 VV : 动词 VC : 是 CC : 表示连词 VE : 有 VA : 表语形容词 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副词
pyhanlp的安装方法见博客:https://blog.csdn.net/qq_45556665/article/details/127294692
from pyhanlp import * sentence = "下雨天地面积水" terms = HanLP.segment(sentence ) for term in terms: # 词和词性from pyhanlp import * print(term.word,term.nature) document = "水利部水资源司司长陈明忠9月29日在国务院新闻办举行的新闻发布会上透露," \ "根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标," \ "有部分省超过红线的指标。对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批," \ "严格地进行水资源论证和取水许可的批准。" # 提取document的两个关键词 print(HanLP.extractKeyword(document, 2)) # 提取ducument中的3个关键句作为摘要 print(HanLP.extractSummary(document, 3)) para_sen = "关注数据科学杂谈公众号,从零开始学习自然语言处理。" sentence = HanLP.parseDependency(para_sen) print(sentence) # 输出依存文法的结果 txt文件,在windows系统下的 Dependency Viewer.exe 打开文件 path = "text_return.txt" with open(path, "w", encoding='utf-8') as f: f.write(str(sentence)) print("path:%s" % (path))
依存关系说明
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,组合数字 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 掌控者
数据:一共包含10段文本
生成句法分析树
依存句法分析
from pyhanlp import *
text = ''
with open('data.txt','r',encoding='utf-8') as inf:
text = inf.read() # 读入文本数据
# 提取text的两个关键词
print(HanLP.extractKeyword(text, 2))
# 提取text中的3个关键句作为摘要
print(HanLP.extractSummary(text, 3))
# para_sen = "1955年6月美国旧金山历经艰难险阻已过而立之年的师昌绪登上了克利夫兰总统号轮船"
text = ''
path = "data_return.txt"
with open('data.txt','r',encoding='utf-8') as inf:
text = inf.readlines() # 以行的方式读入文本数据
# print(text)
for item in range(len(text)): # 依次读取每行文本
para_sen = text[item]
sentence = HanLP.parseDependency(para_sen) # 对每一行句子进行依存句法分析
print(sentence)
print("========================================")
# 输出依存文法的结果 txt文件
with open(path, "a", encoding='utf-8') as f:
f.write(str(sentence))
print("path:%s" % (path))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。