Ltp中源代码和模型包括:中文分词、词性标注、未登录词识别、依存句法、语义角色标注几个模块。
目录
1、标注集合
分词标注集
词性标注集
命名实体识别标注集
依存句法关系
语义角色类型
2、快速使用
载入模型
分句
用户自定义词典
分词
词性标注
命名实体识别
语义角色标注
依存句法分析
语义依存分析(树)
语义依存分析(图)
标记
含义
举例
B
词首
__中__国
I
词中
哈__工__大
E
词尾
科__学__
S
单字成词
的
LTP 使用的是863词性标注集,其各个词性含义如下表。
Tag
Description
Example
Tag
Description
Example
a
adjective
美丽
ni
organization name
保险公司
b
other noun-modifier
大型, 西式
nl
location noun
城郊
c
conjunction
和, 虽然
ns
geographical name
北京
d
adverb
很
nt
temporal noun
近日, 明代
e
exclamation
哎
nz
other proper noun
诺贝尔奖
g
morpheme
茨, 甥
o
onomatopoeia
哗啦
h
prefix
阿, 伪
p
preposition
在, 把
i
idiom
百花齐放
q
quantity
个
j
abbreviation
公检法
r
pronoun
我们
k
suffix
界, 率
u
auxiliary
的, 地
m
number
一, 第一
v
verb
跑, 学习
n
general noun
苹果
wp
punctuation
,。!
nd
direction noun
右侧
ws
foreign words
CPU
nh
person name
杜甫, 汤姆
x
non-lexeme
萄, 翱
NE识别模块的标注结果采用O-S-B-I-E标注形式,其含义为
标记
含义
O
这个词不是NE
S
这个词单独构成一个NE
B
这个词为一个NE的开始
I
这个词为一个NE的中间
E
这个词位一个NE的结尾
LTP中的NE 模块识别三种NE,分别如下:
关系类型
Tag
Description
Example
主谓关系
SBV
subject-verb
我送她一束花 (我 <– 送)
动宾关系
VOB
直接宾语,verb-object
我送她一束花 (送 –> 花)
间宾关系
IOB
间接宾语,indirect-object
我送她一束花 (送 –> 她)
前置宾语
FOB
前置宾语,fronting-object
他什么书都读 (书 <– 读)
兼语
DBL
double
他请我吃饭 (请 –> 我)
定中关系
ATT
attribute
红苹果 (红 <– 苹果)
状中结构
ADV
adverbial
非常美丽 (非常 <– 美丽)
动补结构
CMP
complement
做完了作业 (做 –> 完)
并列关系
COO
coordinate
大山和大海 (大山 –> 大海)
介宾关系
POB
preposition-object
在贸易区内 (在 –> 内)
左附加关系
LAD
left adjunct
大山和大海 (和 <– 大海)
右附加关系
RAD
right adjunct
孩子们 (孩子 –> 们)
独立结构
IS
independent structure
两个单句在结构上彼此独立
核心关系
HED
head
指整个句子的核心
语义角色类型
说明
ADV
adverbial, default tag ( 附加的,默认标记 )
BNE
beneficiary ( 受益人 )
CND
condition ( 条件 )
DIR
direction ( 方向 )
DGR
degree ( 程度 )
EXT
extent ( 扩展 )
FRQ
frequency ( 频率 )
LOC
locative ( 地点 )
MNR
manner ( 方式 )
PRP
purpose or reason ( 目的或原因 )
TMP
temporal ( 时间 )
TPC
topic ( 主题 )
CRD
coordinated arguments ( 并列参数 )
PRD
predicate ( 谓语动词 )
PSR
possessor ( 持有者 )
PSE
possessee ( 被持有 )
from ltp import LTP ltp = LTP() # 默认加载 Small 模型 # ltp = LTP(path = "base|small|tiny") # ltp = LTP(path = "tiny.tgz|tiny-tgz-extracted") # 其中 tiny-tgz-extracted 是 tiny.tgz 解压出来的文件夹
使用LTP分句只需要调用ltp.sent_split函数
from ltp import LTP ltp = LTP() sents = ltp.sent_split(["他叫汤姆去拿外衣。", "汤姆生病了。他去了医院。"]) # [ # "他叫汤姆去拿外衣。", # "汤姆生病了。", # "他去了医院。" # ]
# user_dict.txt 负重前行 长江大桥
from ltp import LTP ltp = LTP() # user_dict.txt 是词典文件, max_window是最大前向分词窗口 ltp.init_dict(path="user_dict.txt", max_window=4) # 也可以在代码中添加自定义的词语 ltp.add_words(words=["负重前行", "长江大桥"], max_window=4)
使用LTP分词非常简单,下面是一个简短的例子:
from ltp import LTP ltp = LTP() segment, _ = ltp.seg(["他叫汤姆去拿外衣。"]) # [['他', '叫', '汤姆', '去', '拿', '外衣', '。']] # 对于已经分词的数据 segment, hidden = ltp.seg(["他/叫/汤姆/去/拿/外衣/。".split('/')])
from ltp import LTP ltp = LTP() seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"]) pos = ltp.pos(hidden) # [['他', '叫', '汤姆', '去', '拿', '外衣', '。']] # [['r', 'v', 'nh', 'v', 'v', 'n', 'wp']]
from ltp import LTP ltp = LTP() seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"]) ner = ltp.ner(hidden) # [['他', '叫', '汤姆', '去', '拿', '外衣', '。']] # [[('Nh', 2, 2)]] tag, start, end = ner[0][0] print(tag,":", "".join(seg[0][start:end + 1]))] # Nh : 汤姆
from ltp import LTP ltp = LTP() seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"]) srl = ltp.srl(hidden) # [['他', '叫', '汤姆', '去', '拿', '外衣', '。']] # [ # [ # [], # 他 # [('ARG0', 0, 0), ('ARG1', 2, 2), ('ARG2', 3, 5)], # 叫 -> [ARG0: 他, ARG1: 汤姆, ARG2: 拿外衣] # [], # 汤姆 # [], # 去 # [('ARG0', 2, 2), ('ARG1', 5, 5)], # 拿 -> [ARG0: 汤姆, ARG1: 外衣] # [], # 外衣 # [] # 。 # ] # ] srl = ltp.srl(hidden, keep_empty=False) # [ # [ # (1, [('ARG0', 0, 0), ('ARG1', 2, 2), ('ARG2', 3, 5)]), # 叫 -> [ARG0: 他, ARG1: 汤姆, ARG2: 拿外衣] # (4, [('ARG0', 2, 2), ('ARG1', 5, 5)]) # 拿 -> [ARG0: 汤姆, ARG1: 外衣] # ] # ]
需要注意的是,在依存句法当中,虚节点ROOT占据了0位置,因此节点的下标从1开始。
from ltp import LTP ltp = LTP() seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"]) dep = ltp.dep(hidden) # [['他', '叫', '汤姆', '去', '拿', '外衣', '。']] # [ # [ # (1, 2, 'SBV'), # (2, 0, 'HED'), # 叫 --|HED|--> ROOT # (3, 2, 'DBL'), # (4, 2, 'VOB'), # (5, 4, 'COO'), # (6, 5, 'VOB'), # (7, 2, 'WP') # ] # ]
与依存句法类似的,这里的下标也是从1开始。
from ltp import LTP ltp = LTP() seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"]) sdp = ltp.sdp(hidden, graph=False) # [['他', '叫', '汤姆', '去', '拿', '外衣', '。']] # [ # [ # (1, 2, 'Agt'), # (2, 0, 'Root'), # 叫 --|Root|--> ROOT # (3, 2, 'Datv'), # (4, 2, 'eEfft'), # (5, 4, 'eEfft'), # (6, 5, 'Pat'), # (7, 2, 'mPunc') # ] # ]
与依存句法类似的,这里的下标也是从1开始。
from ltp import LTP ltp = LTP() seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"]) sdp = ltp.sdp(hidden, graph=True) # [['他', '叫', '汤姆', '去', '拿', '外衣', '。']] # [ # [ # (1, 2, 'Agt'), # (2, 0, 'Root'), # 叫 --|Root|--> ROOT # (3, 2, 'Datv'), # (3, 4, 'Agt'), # (3, 5, 'Agt'), # (4, 2, 'eEfft'), # (5, 4, 'eEfft'), # (6, 5, 'Pat'), # (7, 2, 'mPunc') # ] # ]
相关知识
Science丨重启阿尔茨海默病患者大脑的“能源引擎”:IDO1抑制剂
植物病理学课程教学探索及实践
风景园林绿化工程技术及实践
杜鹃花如何栽培(杜鹃花栽培实践介绍)
生态城“传经”联合国:介绍可持续发展具体实践
植物学实践教学
新西兰银蕨临时工作签证及费用介绍
文明实践“锦”行时
植物病理学实验教学改革实践及问题思考
绿色供应链管理实践进展、困境及破解对策
网址: Ltp介绍及实践(20200925) https://m.huajiangbk.com/newsview1074108.html
上一篇: iOS webview无法加载网 |
下一篇: 【乡村·新聚焦】花牛苹果乘上“小 |