之前使用LTP4.1.15时使用的语句一般是
from ltp import LTP ltp = LTP() SEN = ['他叫汤姆去拿外衣。'] seg,hidden = ltp.seg(SEN) pos=ltp.pos(hidden) dep=ltp.dep(hidden) print(seg,'\n') print(pos,'\n') print(dep,'\n')
输出分词,词性标注,依存句法分析结果,而且输出格式是列表
LTP4.2.11.post2调用时做出了改变,如果直接使用语句ltp.seg()进行调用,会报错
显示ltp没有.seg功能,查询资料原来是新版本LTP的api改变了,查找sit-packages后发现调用方法使用的是pipline:
ltp.pipeline("他叫汤姆去拿外衣。").to_tuple()
from ltp import LTP ltp = LTP()
words, pos, ner = ltp.pipeline("他叫汤姆去拿外衣。").to_tuple() print(words, pos, ner)
输出结果为列表
观察版本做出的改变:1.输入上,旧版必须要求列表输入;新版本字符串和列表都可以;
2.调用方式上;
3.输出上:旧版本为列表,新版本的列表形式不太一样,
例如对于依存句法分析上,
旧版本输出节点信息和标注结果:[[(1, 2, 'SBV'), (2, 0, 'HED'), (3, 4, 'ATT'), (4, 8, 'ATT'), (5, 8, 'ATT'), (6, 5, 'POB'), (7, 5, 'RAD'), (8, 2, 'VOB'), (9, 2, 'WP')]] ;
新版本采用{}方式存储节点和标注,是分开的:[{'head': [2, 0, 4, 11, 11, 7, 5, 5, 11, 11, 2, 2], 'label': ['SBV', 'HED', 'ATT', 'ATT', 'ATT', 'ATT', 'POB', 'RAD', 'ATT', 'ATT', 'VOB', 'WP']}]
语义角色标注也有这样的差别,新版本对于节点标注内容没有之前版本明晰了。
调用的一个小实践,记录一下,后续还要用新版本的做自然语言处理的其他任务。