# coding=utf-8
from pyltp import SentenceSplitter
from pyltp import Segmentor
from pyltp import Postagger
from pyltp import NamedEntityRecognizer
from pyltp import Parser
from nltk import DependencyGraph
path = 'C:\\Users\\28612\\Desktop\\SentimentRecommendation\\tool\\LTP\\ltp_data_v3.4.0\\'
def draw(words, postags, arcs):
par_result = ''
for i in range(len(words)):
if arcs[i].head == 0:
arcs[i].relation = "ROOT"
par_result += "\t" + words[i] + "(" + arcs[i].relation + ")" + "\t" + postags[i] + "\t" + str(
arcs[i].head) + "\t" + \
arcs[i].relation + "\n"
conlltree = DependencyGraph(par_result) # 转换为依存句法图
tree = conlltree.tree() # 构建树结构
tree.draw() # 显示输出的树
# 分句
sents = SentenceSplitter.split('元芳你怎么看?我就趴窗口上看呗!')
paragraph1 = '速度非常快。'
# 分词
sengentor = Segmentor()
sengentor.load(path + 'cws.model')
words = sengentor.segment(paragraph1)
sengentor.release()
# 词性标注
postagger = Postagger()
postagger.load(path + 'pos.model')
postags = postagger.postag(words)
postagger.release()
# 命名实体识别
recognizer = NamedEntityRecognizer()
recognizer.load(path + 'ner.model')
netags = recognizer.recognize(words, postags)
recognizer.release()
# 句法分析
parser = Parser()
parser.load(path + 'parser.model')
arcs = parser.parse(words, postags)
parser.release()
print(list(words))
print(list(postags))
print("\t".join("%d:%s" % (arc.head, arc.relation) for arc in arcs))
draw(words, postags, arcs)
words = list(words)
postags = list(postags)
words.insert(0, 'ROOT')
postags.insert(0, 'a')
arcs = [(arc.head, arc.relation) for arc in arcs]
print(words)
print(postags)
print(arcs)
哈工大LTP使用
最新推荐文章于 2023-09-07 09:21:05 发布