设为首页收藏本站

NLP Code Studio

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1703|回复: 0

7. Ltp3.3依存句法树

[复制链接]

该用户从未签到

600

主题

669

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
15110
发表于 2015-8-20 15:09:10 | 显示全部楼层 |阅读模式
Ltp3.3依存句法树(前面各部分总结)

  1. # -*- coding: utf-8 -*-
  2. import sys  
  3. import os
  4. import nltk
  5. from nltk.tree import Tree
  6. from nltk.grammar import DependencyGrammar
  7. from nltk.parse import *
  8. from pyltp import *
  9. import re

  10. # 设置 UTF-8输出环境
  11. reload(sys)
  12. sys.setdefaultencoding('utf-8')
  13. # 分词后处理
  14. ptn = re.compile(r"[0-9\.]+")
  15. def segpost(words):
  16.         newlist = []
  17.         for word in words:
  18.                 numstr = re.search(ptn,word)
  19.                 if numstr:
  20.                         if numstr.start() != 0:
  21.                                 newlist.append("".join(word[:numstr.start()]))
  22.                         newlist.append(numstr.group())
  23.                         if numstr.end() != (len(word)):
  24.                                 newlist.append("".join(word[numstr.end():]))
  25.                 else:
  26.                         newlist.append(word)        
  27.         return newlist
  28. model_path = "X:\\nltk_data\\cws.model"
  29. user_dict = "X:\\nltk_data\\userdict.txt"
  30. segmentor = Segmentor()
  31. segmentor.load_with_lexicon(model_path,user_dict)
  32. # 尊敬的客户,卡尾号1234的信用卡05月未还金额1234.56元,请速缴清欠款,如已还款,请忽略本信息。[北京银行]。
  33. words = segmentor.segment("尊敬的客户,卡尾号1234的信用卡05月未还金额1234.56元,请速缴清欠款,如已还款,请忽略本信息。[北京银行]")
  34. words = segpost(words)

  35. postagger = Postagger()
  36. postagger.load("X:\\nltk_data\\pos.model")
  37. postags = postagger.postag(words)

  38. parser = Parser()
  39. parser.load("X:\\nltk_data\\parser.model")
  40. arcs = parser.parse(words, postags)
  41. arclen = len(arcs)
  42. conll = ""
  43. for i in xrange(arclen):
  44.         if arcs[i].head ==0:
  45.                 arcs[i].relation = "ROOT"
  46.         conll += "\t"+words[i]+"("+postags[i]+")"+"\t"+postags[i]+"\t"+str(arcs[i].head)+"\t"+arcs[i].relation+"\n"         
  47. print conll
  48. conlltree = DependencyGraph(conll)
  49. tree = conlltree.tree()
  50. tree.draw()
复制代码


执行结果:

  1.         尊敬(v)        v        3        ATT
  2.         的(u)        u        1        RAD
  3.         客户(n)        n        12        SBV
  4.         ,(wp)        wp        3        WP
  5.         卡尾号(nz)        nz        8        ATT
  6.         1234(m)        m        8        ATT
  7.         的(u)        u        6        RAD
  8.         信用卡(n)        n        12        SBV
  9.         05(m)        m        10        ATT
  10.         月(n)        n        12        ADV
  11.         未(d)        d        12        ADV
  12.         还(v)        v        0        ROOT
  13.         金额(n)        n        15        SBV
  14.         1234.56(m)        m        15        ATT
  15.         元(q)        q        12        VOB
  16.         ,(wp)        wp        12        WP
  17.         请(v)        v        12        COO
  18.         速(v)        v        17        VOB
  19.         缴清(v)        v        20        ATT
  20.         欠款(n)        n        18        VOB
  21.         ,(wp)        wp        17        WP
  22.         如(v)        v        24        ADV
  23.         已(d)        d        24        ADV
  24.         还款(v)        v        17        COO
  25.         ,(wp)        wp        24        WP
  26.         请(v)        v        24        COO
  27.         忽略(v)        v        26        VOB
  28.         本(r)        r        29        ATT
  29.         信息(n)        n        27        VOB
  30.         。(wp)        wp        12        WP
  31.         [(wp)        wp        32        WP
  32.         北京银行(ni)        ni        12        COO
  33.         ](wp)        wp        32        WP
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表