实验要求:

输入医学影像报告描述“气管环清晰,粘膜正常,管腔完全阻塞。”,基于句法分析实现结构化信息抽取,输出结构化键值对如下:

            <气管环, 清晰>

          <粘膜, 正常>

<管腔, 阻塞>

实验代码: 

# 输入医学影像报告描述“气管环清晰,粘膜正常,管腔完全阻塞。”,
# # 基于句法分析实现结构化信息抽取
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中取出对应的词语。最终输出的格式类似于“<气管环, 清晰>”。
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐