目录
示例及相关概念
实验数据
机构识别
示例及相关概念
在正式开始处理前,可以先看看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)
效果如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)