[python]基于hanlp的机构识别提取

[python]基于hanlp的机构识别提取,第1张

HanLP官网https://www.hanlp.com/

目录

示例及相关概念

实验数据

机构识别


示例及相关概念

在正式开始处理前,可以先看看hanlp的示例效果

from pyhanlp import *
sample='又是快乐(悲伤)写(ctrlcv)代码的一天呢!'
seg = HanLP.segment(sample)
print(seg)
结果显示:
[又是/c, 快乐/a, (/w, 悲伤/a, )/w, 写/v, (/w, ctrlcv/nx, )/w, 代码/n, 的/ude1, 一/m, 天/qt, 呢/y, !/w]

可以看到,经过分词后,会生成一个列表,其中每个元素都由词及标注词性构成

这里引入一个小知识点,那就是关于词性标注的意思,例如悲伤/a,这里的a到底指的是什么嘞

对此整理出一份对应的表格便于查看,如下图,可以看到第一个就是a,指的就是形容词:

由于本次实验主要是对机构的识别,因此挑选出表格中认为合适的“代号”:ni、nit、nt

实验数据

本次实验的数据文本如下,也就是处理后的知乎中一些回答文本:

机构识别
from pyhanlp import *

#补充机构词典,自己根据文本情况添加
CustomDictionary.add("耶鲁", "nt")
CustomDictionary.add("UCL", "nt")
CustomDictionary.add("KCL", "nt")


def get_ner_org(sentence):
    res_list = []
    term_list = HanLP.segment(sentence)
    for each in term_list:
        word, flag = get_word_and_flag(each)
        #此处的flag值可以替换成想要提取的别的
        if flag=='nt' or flag =='ni' or flag=='nit' or flag =='nsf' or flag =='ntu' or flag =='ntc':
            res_list.append(word)
    # 根据长度排序
    res_list = sorted(res_list, key=lambda i: len(i), reverse=True)
    return list(set(res_list))

def get_word_and_flag(each):
    #传入数据为:可以/v,耶鲁/nsf, 了/ule, 这个/rz, 月/n, 月底/t, 的/ude1, 航班/n格式
    list1 = str(each).split('/') #list1[可以,v]
    word = list1[0]
    flag = list1[1]
    return word,flag
    
inputs = open('自己的数据文本.csv', 'r', encoding='utf-8')
for line in inputs:    
    list1 = get_ner_org(line)
    #if list1:
        #print(list1)
    print(list1)

效果如下:

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/917192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存