使用Spacy实现命名实体识别

本次实验的目的是完成文本数据的词性标注和识别文本中的命名实体
一、数据来源
数据是2022年2月4日的新闻
二、数据预处理
使用jieba对文本进行分词和去停用词,使用的是哈工大的停用词表

import jieba# 创建停用词列表 使用哈工大的停用词表
def stopwordslist():stopwords = [line.strip() for line in open('hit_stopwords.txt',encoding='UTF-8').readlines()]return stopwords# 对句子进行中文分词
def seg_depart(sentence):# 对文档中的每一行进行中文分词sentence_depart = jieba.cut(sentence.strip())# 创建一个停用词列表stopwords = stopwordslist()# 输出结果为outstroutstr = ''# 去停用词for word in sentence_depart:if word not in stopwords:if word != '\t':outstr += wordoutstr += ""return outstr# 给出文档路径
filename = "data.txt"
outfilename = "out.txt"
inputs = open(filename, 'r', encoding='UTF-8')
outputs = open(outfilename, 'w', encoding='UTF-8')# 将输出结果写入out.txt中
for line in inputs:line_seg = seg_depart(line)outputs.write(line_seg) outputs.close() # 关闭文件
inputs.close()
print("删除停用词和分词成功!!!")

处理过后的数据

由于之后还要采用posseg进行分词,所以在预处理时并没有用“ ”(空格)将两个词分开。
三、使用posseg完成词性标注
导入第三方库

import jieba
import jieba.posseg as pseg
import paddle
text = ''
with open('out.txt','r',encoding='utf-8') as inf:text = inf.read() # 读入文本数据
# print(text)
# 开启静态图模式
paddle.enable_static()
# # 引入paddle包,开启paddle模式
jieba.enable_paddle()
# 使用paddle分词,设置use_paddle=True
texts = pseg.cut(text,use_paddle = True)
# 存放人名
Person = []
# 存放地名
Location = []
# 存放机构名
Organization = []
# 存放时间
Time = []
for text,flag in texts:if flag == 'PER':Person.append(text)if flag == 'LOC':Location.append(text)if flag == 'ORG':Organization.append(text)if flag == 'TIME':Time.append(text)print('%s %s'%(text,flag))
print("===========")
print("Person" + str(Person))
print("Location" + str(Location))
print("Organization" + str(Organization))
print("Time" + str(Time))



posseg 词性表

四、使用spacy实现命名实体可视化

import spacy
from spacy import displacy
from collections import Counternlp_zh = spacy.load('zh_core_web_sm')  #加载中文包def read_file(file_name):                    #打开要处理的文本with open(file_name,'r',encoding='utf-8') as file:return file.read()text = read_file('out.txt')  #读取文本
processed_text = nlp_zh(text)
# print(processed_text)
sentences = [s for s in processed_text.sents]
# print(len(sentences))    #输出有多少句话
displacy.render(processed_text,style='ent',jupyter=True)def find_person(doc):c = Counter()for ent in processed_text.ents:if ent.label_ == 'DATE':c[ent.lemma_]+=1return c.most_common(1)
print(find_person(processed_text))

查看spacy的版本号

!python -m spacy info


若是在按照中文包zh_core_web_sm出现错误时,需要检查中文包和spacy的版本是否一致。
查看词性表达的含义

spacy.explain("GPE")

spacy.explain("CARDINAL")

spacy.explain("EVENT")

spacy.explain("LOC")

源码程序

https://download.csdn.net/download/qq_45556665/86742175

停用词表

https://download.csdn.net/download/qq_45556665/86742165

使用Spacy实现命名实体识别相关推荐

  1. 基于spaCy的领域命名实体识别

    基于spaCy的命名实体识别 ----以"大屠杀"领域命名实体识别研究为例 作者: Dr. W.J.B. Mattingly Postdoctoral Fellow at the ...

  2. spacy spaCy主要功能包括分词、词性标注、词干化、命名实体识别、名词短语提取等等

    spaCy主要功能包括分词.词性标注.词干化.命名实体识别.名词短语提取等等https://zhuanlan.zhihu.com/p/51425975

  3. 初学者 | 一文读懂命名实体识别

    本文对自然语言基础技术之命名实体识别进行了相对全面的简绍,包括定义.发展历史.常见方法.以及相关数据集,最后推荐一大波python实战利器,并且包括工具的用法. 定义 先来看看维基百科上的定义:Nam ...

  4. 神圣的NLP!一文理解词性标注、依存分析和命名实体识别任务

    词性标注(Part-of-Speech Tagging, POS).命名实体识别(Name Entity Recognition,NER)和依存句法分析(Dependency Parsing)是自然语 ...

  5. 命名实体识别_命名实体识别的几种标注形式

    选择一个正确的用例和工作流 Choosing the right recipe and workflow 所以你有一个需要解决的NER问题,以及需要注释的数据.你要尽可能高效地完成它.但是如何为你的用 ...

  6. 一文读懂命名实体识别

    本文对自然语言基础技术之命名实体识别进行了相对全面的介绍,包括定义.发展历史.常见方法.以及相关数据集,最后推荐一大波 Python 实战利器,并且包括工具的用法. 01 定义 先来看看维基百科上的定 ...

  7. 中文处理工具fastHan 2.0:支持中文分词、词性标注、命名实体识别、依存语法分析、中文AMR的强有力工具

    fastHan 简介 fastHan是基于fastNLP与pytorch实现的中文自然语言处理工具,像spacy一样调用方便. 其内核为基于BERT的联合模型,其在15个语料库中进行训练,可处理中文分 ...

  8. ELMO实战-命名实体识别

    ELMO模型实战-命名实体识别 数据处理 import numpy as np import torch import os# shared global variables to be import ...

  9. 推荐30个以上比较好的命名实体识别模型github源码?

    命名实体识别是自然语言处理中的一个重要任务,也是比较经典的应用.这里推荐几个比较流行的命名实体识别模型的GitHub源码: BERT-NER:基于BERT的命名实体识别模型,使用了CRF层来解码,在很 ...

最新文章

  1. java spring 配置文件_[Java教程]Spring配置文件
  2. 设计模式之命令模式、举例分析、通俗易懂
  3. Python发送邮件smtplib.SMTP各报错问题的解决方法
  4. CF 375D. Tree and Queries加强版!!!【dfs序分块 大小分类讨论】
  5. html 循环tr只显示一个,动态加载进来的tr该如何去循环查看它的值呢
  6. windbg 符号表
  7. 兰州大学第一届 飞马杯 ★★飞马祝福语★★ 线段树维护dp(动态dp)
  8. 用计算机控制英文,计算机控制
  9. PMP试题 | 每日一练,快速提分 9.3
  10. 快速了解 Log4j的日志级别
  11. java开发一年后学习计划
  12. c语言实现去除字符串中空格
  13. 基础知识之————直方图
  14. 简易超声波雷达的arduino实现
  15. 技术博客丨原来模型训练可以不用标注?一文全解四大机器学习方法
  16. Android CompressImage图片压缩工具类介绍
  17. ts重点学习136-声明合并
  18. Couldn‘t find Lora with name guofeng3_v32Light 0% 0/20 [00:00<?, ?it/s] Error completing request A
  19. Java、JSP社区蔬菜、食品交易平台
  20. 微信小程序 电商项目

热门文章

  1. 软硬件配置大幅提升!解读戴尔新一代PowerEgde14服务器
  2. 基于Docker搭建MySQL(MariaDB)+ mycat读写分离测试环境
  3. 推箱子,广搜,最小步数并输出路径
  4. java读取文件目录返回树形结构
  5. 【BZOJ1415】【NOI2005】聪聪和可可(动态规划,数学期望)
  6. 计算机毕业设计django基于python平面地图监控(源码+系统+mysql数据库+Lw文档)
  7. 产品新人必备的用户增长地图
  8. Java基础学习之常用API(16)
  9. 开源软件开发导论第三次作业——openKylin RISC-V系统启动优化 proposal
  10. 论文笔记-EWA-2经验加权吸引力模型