自然语言处理——句法分析和语义分析实验
·
实验要求:
输入医学影像报告描述“气管环清晰,粘膜正常,管腔完全阻塞。”,基于句法分析实现结构化信息抽取,输出结构化键值对如下:
<气管环, 清晰>
<粘膜, 正常>
<管腔, 阻塞>
实验代码:
# 输入医学影像报告描述“气管环清晰,粘膜正常,管腔完全阻塞。”,
# # 基于句法分析实现结构化信息抽取
from ltp import LTP
ltp = LTP()
result = ltp.pipeline(["气管环清晰,粘膜不正常,管腔完全阻塞。"], tasks=["cws","sdpg"])
# print(result)
seg = result.cws[0]
# print(seg)
sdpg = result.sdpg
for d in sdpg[0]:
if d[2] == "EXP":
print('<' + seg[d[0]-1] + ', ' + seg[d[1]-1] + '>')
代码解释:
- from ltp import LTP: 导入LTP库中的LTP类,以便后续使用。
- ltp = LTP(): 创建一个LTP对象,用于后续的自然语言处理任务。
- result = ltp.pipeline(["气管环清晰,粘膜不正常,管腔完全阻塞。"], tasks=["cws","sdpg"]): 使用LTP对象调用pipeline方法,对输入的中文文本进行处理。["气管环清晰,粘膜不正常,管腔完全阻塞。"]是输入的文本,tasks=["cws","sdpg"]表示需要进行中文分词(cws)和句法分析(sdpg)这两个任务。执行该语句后,返回结果保存在result对象中。
- seg = result.cws[0]: 获取分词任务(cws)的结果,即将输入文本分成的词语序列。由于输入只有一个句子,因此是一个列表,取第一个元素即可。结果保存在seg变量中。
- sdpg = result.sdpg: 获取句法分析任务(sdpg)的结果,即将输入文本分析成的依存句法树。由于输入只有一个句子,因此是一个列表,取第一个元素即可。结果保存在sdpg变量中。
- for d in sdpg[0]:: 对句法分析的结果进行遍历。
- if d[2] == "EXP":: 判断当前遍历到的节点(d)是否为表示展开关系("EXP")的依存关系类型。
- print('<' + seg[d[0]-1] + ', ' + seg[d[1]-1] + '>'): 如果当前节点是展开关系,则输出对应的词语对,即“被展开的词语, 展开的词语”。其中,d[0]和d[1]分别表示这个依存关系连接的两个词语在分词结果中的位置(从1开始),因此需要将其减1后作为下标从seg中取出对应的词语。最终输出的格式类似于“<气管环, 清晰>”。
更多推荐
所有评论(0)