import os
from pyltp import Parser
from pyltp import Segmentor
from pyltp import Postagger
from pyltp import SentenceSplitter
LTP_DATA_DIR = '.\\ltp-3.3.1-win-x86\\ltp_data'
cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model')
pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model')
par_model_path = os.path.join(LTP_DATA_DIR, 'parser.model')
segmentor = Segmentor()
parser = Parser()
postagger = Postagger()
segmentor.load_with_lexicon(cws_model_path, 'ltp-3.3.1-win-x86\\ltp_data\\seg_lexicon.txt')
segmentor.load(cws_model_path)
words = segmentor.segment('缆桩底座螺栓锈蚀严重,螺栓保护防锈沥青或水泥脱落。')
word_list = list(words)
postagger.load(pos_model_path)
postags = postagger.postag(word_list)
parser.load(par_model_path)
arcs = parser.parse(words, postags)
rely_id = [arc.head for arc in arcs] # 提取依存父节点id
relation = [arc.relation for arc in arcs] # 提取依存关系
heads = ['Root' if id == 0 else words[id-1] for id in rely_id] # 匹配依存父节点词语
print(len(relation),len(words),len(heads))
for i in range(len(word_list)):
print (relation[i] + '(' + word_list[i] + ', ' + heads[i] + ')')
segmentor.release()
parser.release()
postagger.release()
结果: