from pyltp import * import re reload(sys) sys.setdefaultencoding('utf-8') sent = '罗马尼亚 的 首都 是 布加勒斯特 。' words = sent.split(' ') postagger = Postagger() postagger.load('E:\\nlp\\ltp-data-v3.3.1\\pos.model') postags = postagger.postag(words) parser = Parser() parser.load("E:\\nlp\\ltp-data-v3.3.1\\parser.model") arcs = parser.parse(words, postags) arclen = len(arcs) conll = '' for i in xrange(arclen): if arcs[i].head == 0: arcs[i].relation = 'ROOT' conll += '\t' + words[i] + '(' + postags[i] + ')' + '\t' + postags[ i] + '\t' + str(arcs[i].head) + '\t' + arcs[i].relation + '\n' print code.coder(conll) conlltree = DependencyGraph(conll) tree = conlltree.tree() tree.draw()
# -*- encoding: utf-8 -*- import sys import os import code from nltk.tree import Tree from stanford import * reload(sys) sys.setdefaultencoding('utf-8') os.environ['JAVA_HOME'] = 'C:\\Program Files\\Java\\jdk1.8.0_131\\bin\\java.exe' root = 'E:/nlp/nltk_data/stanford-corenlp/' modelpath = root + 'models/lexparser/chinesePCFG.ser.gz' opttype = 'typedDependencies' # penn typedDependencies parser = StanfordParser(modelpath,root,opttype) result = parser.parse('罗马尼亚 的 首都 是 布加勒斯特 。') print code.coder(result) #tree = Tree.fromstring(result) #tree.draw()
# -*- encoding: utf-8 -*- import sys import os import code from pyltp import * reload(sys) sys.setdefaultencoding('utf-8') sent = '欧洲 东部 的 罗马尼亚 , 首都 是 布加勒斯特 ,也 是 一座 世界性 的 城市。' words = sent.split(' ') postagger = Postagger() postagger.load('E:\\nlp\\ltp-data-v3.3.1\\pos.model') postags = postagger.postag(words) recognizer = NamedEntityRecognizer() recognizer.load('E:\\nlp\\ltp-data-v3.3.1\\ner.model') netags = recognizer.recognize(words,postags) for word,postag,netag in zip(words,postags,netags): print code.coder(word+"/"+postag+"/"+netag), #结果: #欧洲/ns/S-Ns 东部/nd/O 的/u/O 罗马尼亚/ns/S-Ns ,/wp/O 首都/n/O 是/v/O 布加勒斯特/ns/S-Ns ,也/d/O 是/v/O 一座/m/O 世界性/n/O 的u/O 城市。/n/O # O表示非专名词,S-Ns为识别的专名
wordlist = list(words) postagger = Postagger() postagger.load(os.path.join(MODELDIR, 'pos.model')) postags = postagger.postag(words) # 对分词和词性标注结果加入到分析器中进行句法解析 parser = Parser() parser.load(os.path.join(MODELDIR, 'parser.model')) arcs = parser.parse(words, postags) # 实体命名识别 recognizer = NamedEntityRecognizer() recognizer.load(os.path.join(MODELDIR, 'ner.model')) netags = recognizer.recognize(words, postags) # 语义角色标注 labeller = SementicRoleLabeller() labeller.load(os.path.join(MODELDIR, 'srl')) roles = labeller.label(words, postags, netags, arcs) # UTF-8转gbk,cmd控制台显示 wordlist_ = code.coderforlist(words) for role in roles: print 'rel:', wordlist_[role.index] # 谓词 for arg in role.arguments: if arg.range.start != arg.range.end: print code.coder(arg.name), ' '.join( wordlist_[arg.range.start:arg.range.end]) else: print code.coder(arg.name), wordlist_[arg.range.start]
#encoding=utf-8 import sys import code from pyltp import * sent = '在 包含 问题 的 所有 解 的 解空间树 中' words = sent.split(" ") # 词性标注 postagger = Postagger() #导入词性标注模型 postagger.load("E:\\nlp\\ltp-data-v3.3.1\\pos.model") postags = postagger.postag(words) for word,postag in zip(words,postags): print code.coder(word)+"/"+postag,
# -*- coding: utf-8 -*- import sys import code from stanford import StanfordPOSTagger reload(sys) sys.setdefaultencoding('utf-8') root = 'E:\\nlp\\nltk_data\\stanford-corenlp\\' modelpath = root + 'models\\pos-tagger\\chinese-distsim\\chinese-distsim.tagger' st = StanfordPOSTagger(root, modelpath) seg_sent = '在 包含 问题 的 所有 解 的 解空间树 中 ,按照 深度优化 搜索 的 策略 , 从 根节点 出发 深度 探索 解空间树' taglist = st.tag(seg_sent) print code.coder(taglist)