ltp
ltp copied to clipboard
为什么SRL识别能力很低?被动句都不能处理?
def parse_srl(ltp, sent):
seg, hidden = ltp.seg([sent])
seg = seg[0]
srl = ltp.srl(hidden, keep_empty=False)
srl = srl[0]
for pred, args in srl:
di = {}
for name, start, end in args:
di[name] = seg[start:end + 1]
print(f"{seg[pred]} -> {di}")
ltp = LTP("base2")
parse_srl(ltp, "兔子咬了我")
# 咬 -> {'A0': ['兔子'], 'A1': ['我']}
parse_srl(ltp, "我被兔子咬了")
# 咬 -> {'A0': ['兔子']}
貌似pyltp可以处理? 试过了small, base, base2 都不能处理被动句。
有意思,似乎得用AMR:https://hanlp.hankcs.com/?sentence=我被兔子咬了#amr
我也遇到了一样的问题,旧的pyltp反而可以处理被动句
二者的训练语料不一样