【6-1】使用hanlp进行实体抽取以及句法分析(问题待解决)

1.使用hanlp抽取法人名称、企业名称等信息

# -*- coding: utf-8 -*-  
from pyhanlp import *
  
text1="1998年11月11日,马化腾和同学张志东在广东省深圳市正式注册成立“深圳市腾讯计算机系统有限公司”,之后许晨晔、陈一丹、曾李青相继加入。当时公司的业务是拓展无线网络寻呼系统,为寻呼台建立网上寻呼系统,这种针对企业或单位的软件开发工程是所有中小型网络服务公司的最佳选择。"  
  
CRFnewSegment = HanLP.newSegment("crf")  
term_list = CRFnewSegment.seg(text1)  
print(term_list)  
  
rmlist= []  
complist=[]  
  
for term in term_list:  
    if(term.nature=="nr"):
        rmlist.append(term.word)  
    if(term.nature=='nt'):
        complist.append(term.word)  
print(rmlist) 
print(complist) 

问题:使用term.nature.name=="nr",保错AttributeError: 'com.hankcs.hanlp.corpus.tag.Nature' object has no attribute 'name',

           使用term.nature=="nr",最终结果为空

问题解决:将term.nature改为term.nature.toString()

分析:在pyhanlp库中,term.nature返回的是一个Nature对象,而不是直接返回一个字符串。因此,直接比较term.nature和字符串会失败。使用term.nature.toString()方法将Nature对象转换为字符串进行比较,这是正确的方式。 

2.使用hanlp提取关键词信息

from pyhanlp import *  
document = "程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员和项目经理四大类。"  
print(HanLP.extractKeyword(document, 2))  

问题:

正确结果应为:

但执行结果为:

问题解决:暂无

3.基于hanlp的句法分析案例

from pyhanlp import *  
# 依存句法分析  
sentence = HanLP.parseDependency("1998年11月11日,马化腾和同学张志东在广东省深圳市正式注册成立“深圳市腾讯计算机系统有限公司”。")  
  
print(sentence)  
  
for word in sentence.iterator():  # 通过dir()可以查看sentence的方法  
    print("%s --(%s)--> %s" % (word.LEMMA, word.DEPREL, word.HEAD.LEMMA))  
print()  
  
# 也可以直接拿到数组,任意顺序或逆序遍历  
word_array = sentence.getWordArray()  
for word in word_array:  
    print("%s --(%s)--> %s" % (word.LEMMA, word.DEPREL, word.HEAD.LEMMA))  
print()  
  
# 还可以直接遍历子树,从某棵子树的某个节点一路遍历到虚根  
CoNLLWord = JClass("com.hankcs.hanlp.corpus.dependency.CoNll.CoNLLWord")  
head = word_array[12]  
while head.HEAD:  
    head = head.HEAD  
    if (head == CoNLLWord.ROOT):  
        print(head.LEMMA)  
    else:  
        print("%s --(%s)--> " % (head.LEMMA, head.DEPREL))  

4.基于模板完成事件抽取 

(1)依赖包:pyhanlp

(2)组件如何安装、使用

1. 触发词:安装、配置、使用

2. 抽取类型:时间抽取

(3)匹配模板

1. .*?安装配置:(.*?)[。]

2. .*?使用:(.*?)[。]

(4)核心代码

#核心代码:  
if word == '安装' or word == '配置':  
pattern = re.compile('.*?安装配置:(.*?)[。]') # 查找数字  
for sentence in data:  
# print(sentence.decode('utf-8'))  
res = re.findall(pattern,sentence.decode('utf-8'))  
if len(res):  
result.append(res)  

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值