pyltp实体识别_基于pyltp进行命名实体识别
pyltp简介
pyltp 是 LTP 的 Python 封装。LTP是哈尔滨工业大学社会计算与信息检索研究中心研发的一款自然语言处理工具,提供了分词,词性标注,命名实体识别,依存句法分析,语义角色标注等功能。
==》ptltp的使用文档
pyltp的安装
使用pip install pyltp指令即可安装,如有报错,可参考这篇教程(python3.6 安装pyltp)中的解决方法。
在正式开始使用之前还应下载完整的LTP模型文件,官方给出的下载链接:百度云。
值得注意的是下载的模型版本与当前版本的 pyltp 对应,否则会导致程序无法正确加载模型。本文中下载的是3.4.0版本的模型文件。
编写代码调用pyltp进行命名实体识别
需要注意:①命名实体识别是在分词及词性标注的基础之上进行的;②输入文本的编码格式一定要是UTF-8
下面的代码的功能是对金庸小说文本中的人名进行识别
# -*- coding: utf-8 -*-
import os
# 引入模型文件
LTP_DATA_DIR = 'D:\MoreProgram\ltp_data_v3.4.0' # ltp模型目录的路径
cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') # 分词模型路径,模型名称为`cws.model`
pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') # 词性标注模型路径,模型名称为`pos.model`
ner_model_path = os.path.join(LTP_DATA_DIR, 'ner.model') # 命名实体识别模型路径,模型名称为`ner.model`
#打开需要命名实体识别的文本,编码一定要是 UTF-8
with open(r'金庸全集.txt', encoding="UTF-8", errors='ignore') as file_object:
jinyong = file_object.read()
#分词
from pyltp import Segmentor
segmentor = Segmentor() # 初始化实例
segmentor.load(cws_model_path) # 加载模型
words = segmentor.segment(jinyong) # 分词
words_list = list(words) #words_list列表保存着分词的结果
segmentor.release() # 释放模型
#词性标注
from pyltp import Postagger
postagger = Postagger() # 初始化实例
postagger.load(pos_model_path) # 加载模型
postags = postagger.postag(words) # 词性标注
postags_list = list(postags) #postags_list保存着词性标注的结果
postagger.release() # 释放模型
#命名实体识别
from pyltp import NamedEntityRecognizer
recognizer = NamedEntityRecognizer() # 初始化实例
recognizer.load(ner_model_path) # 加载模型
netags = recognizer.recognize(words, postags) # 命名实体识别
netags_list = list(netags) #netags_list保存着命名实体识别的结果
recognizer.release() # 释放模型
#去除非命名实体
a = len(words_list)
words_list_1=[]
postags_list_1=[]
netags_list_1=[]
i = 0
while i < a:
if netags_list[i] != 'O':
words_list_1.append(words_list[i])
postags_list_1.append(postags_list[i])
netags_list_1.append(netags_list[i])
i += 1
a1 = len(words_list_1)
#提取人名
i = 0
names=[]
while i
if netags_list_1[i] == 'S-Nh':
names.append(words_list_1[i])
elif netags_list_1[i] == 'B-Nh':
temp_s3 = ''
temp_s3 += words_list_1[i]
j = i+1
while (j
temp_s3 += words_list_1[j]
j += 1
names.append(temp_s3)
i += 1
#去除重复的人名后写入文件
name_list = set(names)
name_file=open('NER-JinyongPerson.txt','w', encoding='UTF-8',errors='ignore')
for name in name_list:
name_file.write(name+'\n')
结果部分截图如下:
image.png
pyltp实体识别_基于pyltp进行命名实体识别相关推荐
- delphi 数字识别_基于STM32单片机的车牌识别
系统介绍 使用STM32F103RCT6作为主控,摄像头使用OV7670(带FIFO).STM32进行了16倍频.识别过程分别为:图像采集,二值化,识别车牌区域,字符分割,字符匹配. 识别过程分 ...
- stm32车牌识别_基于STM32单片机的车牌识别
系统介绍 使用STM32F103RCT6作为主控,摄像头使用OV7670(带FIFO).STM32进行了16倍频.识别过程分别为:图像采集,二值化,识别车牌区域,字符分割,字符匹配. 识别过程分 ...
- h5调用指纹识别_基于HTML Canvas实现“指纹识别”技术,canvas指纹
基于HTML Canvas实现"指纹识别"技术,canvas指纹 作者:zhanhailiang 日期:2015-01-31 说明 所谓指纹识别是指为每个设备标识唯一标识符(以下简 ...
- 电容屏物体识别_基于电容屏的物体识别技术简介
原标题:基于电容屏的物体识别技术简介 物体识别技术概述 物体识别是基于触控屏的标签识别交互系统,由触控屏和实物标签Marker,软件底层识别程序和软件上层效果程序,支持多个Marker同时显示,将Ma ...
- java kinect 人体识别_基于kinect的人体动作识别系统
[实例简介] 基于kinect v2的人体动作识别,配套博客(http://blog.csdn.net/baolinq/article/),基于mfc,可以识别左移右移.上蹦下跳等,也可以自己自定义其 ...
- 安卓dtmf识别_基于Python的DTMF信号识别
前言 我这标题起得怎么这么像课程论文呢-- 啊,放心啦,这不是课程论文,这只是一个有趣(且值钱)的程序. 起因是这样的.我加了几个软件兼职群,前几天我发现其中有一个项目,是利用FFT识别信号啥的,报价 ...
- python读取视频流做人脸识别_基于 Python + OpenCV 进行人脸识别,视频追踪代码全注释...
1 #-*- coding: utf-8 -*- 2 from __future__ importunicode_literals3 #操作文件 4 importos5 #科学计算 6 importn ...
- 安卓dtmf识别_安卓dtmf识别_基于Python的DTMF信号识别
前言 我这标题起得怎么这么像课程论文呢-- 啊,放心啦,这不是课程论文,这只是一个有趣(且值钱)的程序. 起因是这样的.我加了几个软件兼职群,前几天我发现其中有一个项目,是利用FFT识别信号啥的,报价 ...
- 知识图谱 基于CRF的命名实体识别模型
基于CRF的命名实体识别模型 条件随机场 CRF 条件随机场 CRF 是在已知一组输入随机变量条件的情况下,输出另一组随机变量的条件概率分布模型:其前提是假设输出随机变量构成马尔可夫随机场:条件随 ...
- 【命名实体识别(NER)】(1):命名实体识别综述
什么是命名实体识别? 命名实体识别(Named Entity Recognition,简称NER),又称作"专名识别",是自然语言处理中的一项基础任务,应用范围非常广泛.命名实体一 ...
最新文章
- dbeaver无法修改表数据_为什么你用不好数据透视表,看完才知道
- OFFICE2019精简安装D盘(包括Word、PPT、Excel,可根据需要调整)+VISIO2019+Mathtype7.4.0完美下载安装教程
- [zz]从HDFS看分布式文件系统的设计需求
- 传智播客 Html基础知识学习笔记
- 6-4 链表逆置 (10 分)
- java迭代遍历_JAVA集合中的迭代器的遍历
- 漫谈android系统(4)bring up panel
- UltraEdit编辑器+注册机(windows版)让数据处理更简单
- python去除图片复杂背景_3行Python代码实现10秒抠图换背景图的AI神器,根本无需PS...
- [原创] Bandwagon 追加 swap 大小
- HMAC-SHA1加密算法c++与java的实现
- idea导入项目却没有项目结构
- Android ImageView 图片拉伸,填满控件
- 企业办公最强“扫雷”秘籍,低代码避坑有一套
- 【red hat设置用户密码】passwd命令设置初始口令
- 计算机网络工程方向,计算机网络专业发展方向
- Flutter使用Scaffold报错。
- JS在拼接字符串中加入空格
- mybatipse 下载_国家级优质工程的策划实施和经典做法,92页PPT可下载!
- 2022-2027年中国顺风车行业市场调研及未来发展趋势预测报告