中文依存句法分析接口

1、HanLP接口

from pyhanlp import HanLP
s = '会议宣布了首批资深院士名单'
dp = HanLP.parseDependency(s)
  • print(dp)
1	会议	会议	n	n	_	2	主谓关系	_	_
2	宣布	宣布	v	v	_	0	核心关系	_	_
3	了	了	u	u	_	2	右附加关系	_	_
4	首批	首批	q	q	_	7	定中关系	_	_
5	资深	资深	b	b	_	6	定中关系	_	_
6	院士	院士	n	n	_	7	定中关系	_	_
7	名单	名单	n	n	_	2	动宾关系	_	_

2、百度AI接口

2.1、示例

from aip import AipNlp  # pip install baidu-aip

# 创建连接
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipNlp(APP_ID, API_KEY, SECRET_KEY)

# 依存句法分析
text = '会议宣布了首批资深院士名单'
dt = client.depParser(text)
print(dt)

在这里插入图片描述

2.2、mode参数(可选)

参数值指代解析
0(默认)web模型该模型的训练数据来源于全网网页数据,适用于处理网页文本等书面表达句子。
1query模型该模型的训练数据来源于用户在百度的日常搜索数据,适用于处理信息需求类的搜索或口语。

2.3、返回值

参数名称数据类型详细说明
log_iduint64随机数,本次请求的唯一标识码
idnumber词的ID
wordstring
postagstring词性
headint词的父节点ID
deprelstring词与父节点的依存关系
{
	'log_id': 7231479245283731092,
	'text': '会议宣布了首批资深院士名单',
	'items': [{
		'postag': 'n',
		'head': 2,
		'word': '会议',
		'id': 1,
		'deprel': 'SBV'
	}, {
		'postag': 'v',
		'head': 0,
		'word': '宣布',
		'id': 2,
		'deprel': 'HED'
	}, {
		'postag': 'u',
		'head': 2,
		'word': '了',
		'id': 3,
		'deprel': 'MT'
	}, {
		'postag': 'm',
		'head': 6,
		'word': '首批',
		'id': 4,
		'deprel': 'ATT'
	}, {
		'postag': 'b',
		'head': 6,
		'word': '资深',
		'id': 5,
		'deprel': 'ATT'
	}, {
		'postag': 'n',
		'head': 7,
		'word': '院士',
		'id': 6,
		'deprel': 'ATT'
	}, {
		'postag': 'n',
		'head': 2,
		'word': '名单',
		'id': 7,
		'deprel': 'VOB'
	}]
}

2.3.1、词性标注

词性含义词性含义词性含义词性含义
Ag形语素g语素ns地名u助词
a形容词h前接成分nt机构团体vg动语素
ad副形词i成语nz其他专名v动词
an名形词j简称略语o拟声词vd副动词
b区别词k后接成分p介词vn名动词
c连词l习用语q量词w标点符号
dg副语素m数词r代词x非语素字
d副词Ng名语素s处所词y语气词
e叹词n名词tg时语素z状态词
f方位词nr人名t时间词un未知词

2.3.2、依存关系

句法缩写解释栗子
定中关系ATT定中关系就是定语和中心词之间的关系,定语对中心词起修饰或限制作用。工人/n师傅/n
(工人/n ← 师傅/n)。
数量关系QUN(quantity)数量关系是指量词或名词同前面的数词之间的关系,该关系中,数词作修饰成分,依存于量词或名词。三/m天/q
(三/m ← 天/q)。
并列关系COO(coordinate)并列关系是指两个相同类型的词并列在一起。奔腾/v咆哮/v的怒江激流
(奔腾/v → 咆哮/v)。
同位关系APP(appositive)同位语是指所指相同、句法功能也相同的两个并列的词或词组。我们大家
(我们 → 大家)。
附加关系ADJ(adjunct)附加关系是一些附属词语对名词等成分的一种补充说明,使意思更加完整,有时候去掉也不影响意思。约/d 二十/m 多/m 米/q 远/a 处/n
(二十/m → 多/m,米/q → 远/a)。
动宾关系VOB(verb-object)对于动词和宾语之间的关系我们定义了两个层次,一是句子的谓语动词及其宾语之间的关系,我们定为OBJ,在下面的单句依存关系中说明;二是非谓语动词及其宾语的关系,即VOB。这两种关系在结构上没有区别,只是在语法功能上,OBJ中的两个词充当句子的谓语动词和宾语,VOB中的两个词构成动宾短语,作为句子的其他修饰成分。历时/v 三/m 天/q 三/m夜/q
(历时/v → 天/q)。
介宾关系POB(preposition-object)介词和宾语之间的关系,介词的属性同动词相似。距/p球门/n
(距/p → 球门/n)。
主谓关系SBV(subject-verb)主谓关系是指名词和动作之间的关系。父亲/n 逝世/v 10/m 周年/q 之际/nd
(父亲/n ← 逝世/v)。
比拟关系SIM(similarity)比拟关系是汉语中用于表达比喻的一种修辞结构。炮筒/n 似的/u 望远镜/n
(炮筒/n ← 似的/u)。
时间关系TMP(temporal)时间关系定义的是时间状语和其所修饰的中心动词之间的关系。十点以前到公司
(以前 ← 到)。
处所关系LOC(locative)处所关系定义的是处所状语和其所修饰的中心动词之间的关系,在公园里玩耍
(在 ← 玩耍)。
“的”字结构DE“的”字结构是指结构助词“的”和其前面的修饰语以及后面的中心词之间的关系。上海/ns 的/u 工人/n
(上海/ns ← 的/u,的/u ← 工人/n)。
“地”字结构DI“地”字结构在构成上同DE类似,只是在功能上不同,DI通常作状语修饰动词。方便/a 地/u 告诉/v 计算机/n
(方便/a ← 地/u,地/u ← 告诉/v)。
“得”字结构DEI助词“得”同其后的形容词或动词短语等构成“得”字结构,对前面的动词进行补充说明。讲/v 得/u 很/d 对/a
(讲/v → 得/u,得/u → 对/a)。
“所”字结构SUO“所”字为一结构助词,后接一宾语悬空的动词做“的”字结构的修饰语,“的”字经常被省略,使结构更加简洁。机电/b 产品/n 所/u 占/v 比重/n 稳步/d 上升/v
(所/u ← 占/v)。
“把”字结构BA把字句是主谓句的一种,句中谓语一般都是及物动词。我们把豹子打死了
(把/p → 豹子/n)。
“被”字结构BEI被字句是被动句,是主语接受动作的句子。豹子被我们打死了
(豹子/n ← 被/p)。
状中结构ADV(adverbial)状中结构是谓词性的中心词和其前面的修饰语之间的关系,中心词做谓语时,前面的修饰成分即为句子的状语,中心词多为动词、形容词,修饰语多为副词,介词短语等。连夜/d 安排/v 就位/v
(连夜/d ← 安排/v)。
动补结构CMP(complement)补语用于对核心动词的补充说明。做完了作业
(做/v → 完)。
兼语结构DBL(double)兼语句一般有两个动词,第二个动词是第一个动作所要表达的目的或产生的结果。[7]曾经/d [8]使/v [9]多少/r [10]旅游/n [11]人/n [12]隔/v [13]岸/n [14]惊叹/v [15]!/wp
(使 → 人/n ,/v使/v → 惊叹/v)。
关联词CNJ(conjunction)关联词语是复句的有机部分。只要他请客,我就来。
(只要 ← 请 ,就 ← 来)。
关联结构CS(conjunctive structure)当句子中存在关联结构时,关联词所在的两个句子(或者两个部分)之间通过各部分的核心词发生依存关系CS。只要他请客,我就来。
(请 ← 来)。
语态结构MT(mood-tense)汉语中,经常用一些助词表达句子的时态和语气,这些助词分语气助词,如:吧,啊,呢等;还有时态助词,如:着,了,过。[12]答应/v [13]孩子/n [14]们/k [15]的/u [16]要求/n [17]吧/u [18],/wp [19]他们/r [20]这/r [21]是/v [22]干/v [23]事业/n [24]啊/u [25]!/wp
([12]答应/v ← [17]吧/u,[21]是/v ← [24]啊/u)。
连谓结构VV(verb-verb)连谓结构是同多项谓词性成分连用、这些成分间没有语音停顿、书面标点,也没有关联词语,没有分句间的逻辑关系,且共用一个主语。美国总统来华访问。
(来华/v → 访问/v)。
核心HED(head)该核心是指整个句子的核心,一般是句子的核心词和虚拟词(或ROOT)的依存关系。这/r 就是/v恩施/ns最/d]便宜/a的/u出租车/n,/wp相当于/v北京/ns的/u “/wp 面的/n ”/wp 。/wp /(就是/v ← /)
前置宾语FOB(fronting object)在汉语中,有时将句子的宾语前置,或移置句首,或移置主语和谓语之间,以起强调作用,我认识这个人 ← 这个人我认识。他什么书都读
(书/n ← 读/v)。
双宾语DOB(double object)动词后出现两个宾语的句子叫双宾语句,分别是直接宾语和间接宾语。我送她一束花。(送/v → 她/r,送/v → 花/n)。
主题TOP(topic)在表达中,我们经常会先提出一个主题性的内容,然后对其进行阐述说明;而主题部分与后面的说明部分并没有直接的语法关系,主题部分依存于后面的核心成分,且依存关系为TOP。西直门,怎么走?
(西直门 ← 走)。
独立结构IS(independent structure)独立成分在句子中不与其他成分产生结构关系,但意义上又是全句所必需的,具有相对独立性的一种成分。事情明摆着,我们能不管吗?
独立分句IC(independent clause)两个单句在结构上彼此独立,都有各自的主语和谓语。我是中国人,我们爱自己的祖国。
(是 → 爱)
依存分句DC(dependent clause)两个单句在结构上不是各自独立的,后一个分句的主语在形式上被省略,但不是前一个分句的主语,而是存在于前一个分句的其他成分中,如宾语、主题等成分。规定后一个分句的核心词依存于前一个分句的核心词。该关系同连谓结构的区别是两个谓词是否为同一主语,如为同一主语,则为VV,否则为DC。大家/r叫/v 它/r “/wp 麻木/a 车/n ”/wp ,/wp 听/v起来/v 怪怪的/a 。/wp
(叫/v → 听/v)。
叠词关系VNV (verb-no-verb or verb-one-verb)如果叠词被分开了,如“是 不 是”、“看一看”,那么这几个词先合并在一起,然后预存到其他词上,叠词的内部关系定义为:(是1→不;不→是2) 。
一个词YGC当专名或者联绵词等切散后,他们之间本身没有语法关系,应该合起来才是一个词。百 度。
标点WP大部分标点依存于其前面句子的核心词上,依存关系WP。

2.4、py映射(复制用)

abbreviationfull nameCn
depreldependency relationship依赖关系
postagpart-of-speech tagging词性标注
postag = {
    'Ag': '形语素', 'g': '语素', 'ns': '地名', 'u': '助词',
    'a': '形容词', 'h': '前接成分', 'nt': '机构团体', 'vg': '动语素',
    'ad': '副形词', 'i': '成语', 'nz': '其他专名', 'v': '动词',
    'an': '名形词', 'j': '简称略语', 'o': '拟声词', 'vd': '副动词',
    'b': '区别词', 'k': '后接成分', 'p': '介词', 'vn': '名动词',
    'c': '连词', 'l': '习用语', 'q': '量词', 'w': '标点符号',
    'dg': '副语素', 'm': '数词', 'r': '代词', 'x': '非语素字',
    'd': '副词', 'Ng': '名语素', 's': '处所词', 'y': '语气词',
    'e': '叹词', 'n': '名词', 'tg': '时语素', 'z': '状态词',
    'f': '方位词', 'nr': '人名', 't': '时间词', 'un': '未知词'}

deprel = {
    'ATT': '定中关系', 'QUN': '数量关系', 'COO': '并列关系', 'APP': '同位关系', 'ADJ': '附加关系',
    'VOB': '动宾关系', 'POB': '介宾关系', 'SBV': '主谓关系', 'SIM': '比拟关系', 'TMP': '时间关系', 'LOC': '处所关系',
    'DE': '的', 'DI': '地', 'DEI': '得', 'SUO': '所', 'BA': '把', 'BEI': '被',
    'ADV': '状中结构', 'CMP': '动补结构', 'DBL': '兼语结构',
    'CNJ': '关联词', 'CS': '关联结构', 'MT': '语态结构', 'VV': '连谓结构',
    'HED': '核心', 'FOB': '前置宾语', 'DOB': '双宾语',
    'TOP': '主题', 'IS': '独立结构', 'IC': '独立分句', 'DC': '依存分句',
    'VNV': '叠词关系', 'YGC': '一个词', 'WP': '标点'}

3、pyltp+networkx

"""句法分析"""
from pyltp import Segmentor, Postagger, Parser

# 实例初始化
segmentor = Segmentor()
postagger = Postagger()
parser = Parser()

# 模型路径
PATH = 'ltp_data_v3.4.0/'
CWS_MODEL = PATH + 'cws.model'  # 分词
POS_MODEL = PATH + 'pos.model'  # 词性标注
PARSER_MODEL = PATH + 'parser.model'  # 依存句法分析

# 读取模型
segmentor.load(CWS_MODEL)
postagger.load(POS_MODEL)
parser.load(PARSER_MODEL)

# 分词、标注、句法分析
text = '会议宣布了资深院士名单'
words = list(segmentor.segment(text))  # 分词
postags = list(postagger.postag(words))  # 词性标注
arcs = parser.parse(words, postags)  # 句法分析

# 释放模型
segmentor.release()
postagger.release()
parser.release()

"""networkx可视化"""
import networkx as nx, matplotlib.pyplot as mp

# 无多重边有向图
G = nx.DiGraph()

# [2, 0, 2, 5, 6, 2]
ah = [a.head for a in arcs]

# ['ROOT', '会议', '宣布', '了', '资深', '院士', '名单']
tree = ['ROOT'] + words

# 添加节点和边
for w in tree:
    G.add_node(w)
for i in range(len(ah)):
    j = ah[i]
    G.add_edge(words[i], tree[j])

# 可视化
mp.rcParams['font.sans-serif']=['SimHei']  # 用黑体显示中文
nx.draw(G, with_labels=True, node_color='lightgreen', font_size=20, node_size=2000, width=3, alpha=0.8)
mp.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值