前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >「Python实战项目」针对医疗数据进行命名实体识别

「Python实战项目」针对医疗数据进行命名实体识别

作者头像
小小科
修改于 2020-08-13 09:57:20
修改于 2020-08-13 09:57:20
1.8K0
举报
文章被收录于专栏:北京马哥教育北京马哥教育

一.什么是命名实体识别

二.基于NLTK的命名实体识别

三.基于Stanford的NER

四.【实战案例】医学糖尿病数据命名实体识别

一 、什么是命名实体识别?

命名实体识别(Named Entity Recognition,简称NER),又称作“专名识别”,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。通常包括两部分:(1)实体边界识别;(2) 确定实体类别(人名、地名、机构名或其他)。

命名实体识别通常是知识挖掘、信息抽取的第一步,被广泛应用在自然语言处理领域。接下来,我们将介绍常用的两种命名实体识别的方法。

二 、基于NLTK的命名实体识别:

NLTK:由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公开数据集、模型上提供了全面、易用的接口,涵盖了分词、词性标注(Part-Of-Speech tag, POS-tag)、命名实体识别(Named Entity Recognition, NER)、句法分析(Syntactic Parse)等各项NLP领域的功能。

使用前需要先下载NLTK,下载地址为:http://pypi.python.org/pypi/nltk,安装完成后,在python环境下输入import nltk测试是否安装成功,然后输入nltk.download()下载nltk所需要的数据包,完成安装。

Python代码实现(注意文件的编码格式为utf-8无BOM格式):

– coding: utf-8 –

import sys

reload(sys)

sys.setdefaultencoding(‘utf8’) #让cmd识别正确的编码

import nltk

newfile = open(‘news.txt’)

text = newfile.read() #读取文件

tokens = nltk.word_tokenize(text) #分词

tagged = nltk.pos_tag(tokens) #词性标注

entities = nltk.chunk.ne_chunk(tagged) #命名实体识别

a1=str(entities) #将文件转换为字符串

file_object = open(‘out.txt’, ‘w’)

file_object.write(a1) #写入到文件中

file_object.close( )

print entities

具体的方法可参考NLTK官网介绍:http://www.nltk.org/,输出的结果为:

>>> entities = nltk.chunk.ne_chunk(tagged)

>>> entities

Tree(‘S’, [(‘At’, ‘IN’), (‘eight’, ‘CD’), (“o’clock”, ‘JJ’),

(‘on’, ‘IN’), (‘Thursday’, ‘NNP’), (‘morning’, ‘NN’),

Tree(‘PERSON’, [(‘Arthur’, ‘NNP’)]),

(‘did’, ‘VBD’), (“n’t”, ‘RB’), (‘feel’, ‘VB’),

(‘very’, ‘RB’), (‘good’, ‘JJ’), (‘.’, ‘.’)])

当然为了方便查看,我们可以以树结构的形式把结果绘制出来:

>>> from nltk.corpus import treebank

>>> t = treebank.parsed_sents(‘wsj_0001.mrg’)[0]

>>> t.draw()

三 、基于Stanford的NER:

Stanford Named Entity Recognizer (NER)是斯坦福大学自然语言研究小组发布的成果之一,主页是:http://nlp.stanford.edu/software/CRF-NER.shtml。Stanford NER 是一个Java实现的命名实体识别(以下简称NER))程序。NER将文本中的实体按类标记出来,例如人名,公司名,地区,基因和蛋白质的名字等。

NER基于一个训练而得的Model(模型可识别出 Time, Location, Organization, Person, Money, Percent, Date)七类属性,其用于训练的数据即大量人工标记好的文本,理论上用于训练的数据量越大,NER的识别效果就越好。

因为原始的NER是基于java实现的,所以在使用Python编程之前,要确保自己电脑上已经安装了jar1.8的环境(否则会报关于Socket的错误)。

然后我们使用Pyner使用python语言实现命名实体识别。下载地址为:https://github.com/dat/pyner

安装Pyner:解压下载的Pyner,命令行中将工作目录切换到Pyner文件夹下, 输入命令 :python setup.py install 完成安装.

接下来,还需要下载StanfordNER工具包,下载地址为:http://nlp.stanford.edu/software/stanford-ner-2014-01-04.zip,然后在解压后的目录打开cmd命令窗体,执行,java -mx1000m -cp stanford-ner.jar edu.stanford.nlp.ie.NERServer -loadClassifier classifiers/english.muc.7class.distsim.crf.ser.gz -port 8080 -outputFormat inlineXML,直到结果为:Loading classifier from classifiers/english.muc.7class.distsim.crf.ser.gz … done [1.2 sec].

以上操作是因为斯坦福的命名实体识别是基于java的socket写的,所以必要保证有一个窗题与我们执行的命令通信。最后,我们终于可以使用python编程实现NER了:

import ner

import sys

import nltk

reload(sys)

sys.setdefaultencoding(‘utf8’)

newfile = open(‘news.txt’)

text = newfile.read()

tagger = ner.SocketNER(host=’localhost’, port=8080)#socket编程

result=tagger.get_entities(text) #stanford实现NER

a1=str(result)

file_object = open(‘outfile.txt’, ‘w’)

file_object.write(a1)

file_object.close( )

print result

文章转载于马哥教育官网!

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
命名实体识别的两种方法
【磐创AI导读】:本文主要介绍自然语言处理中的经典问题——命名实体识别的两种方法。想要学习更多的机器学习知识,欢迎大家点击上方蓝字关注我们的公众号:磐创AI。
磐创AI
2018/08/03
1.2K0
命名实体识别的两种方法
初学者|一文读懂命名实体识别
本文对自然语言基础技术之命名实体识别进行了相对全面的简绍,包括定义、发展历史、常见方法、以及相关数据集,最后推荐一大波python实战利器,并且包括工具的用法。
yuquanle
2019/05/29
1.4K0
一文读懂命名实体识别
本文对自然语言基础技术之命名实体识别进行了相对全面的介绍,包括定义、发展历史、常见方法、以及相关数据集,最后推荐一大波 Python 实战利器,并且包括工具的用法。
用户1737318
2019/04/30
2K0
一文读懂命名实体识别
实体识别(1) -实体识别任务简介
命名实体识别(Named Entity Recognition,简称NER) , 是指识别文本中具有特定意义的词(实体),主要包括人名、地名、机构名、专有名词等等,并把我们需要识别的词在文本序列中标注出来。
致Great
2023/08/25
5400
实体识别(1) -实体识别任务简介
命名实体识别 – Named-entity recognition | NER
命名实体识别(Named Entity Recognition,简称NER),又称作“专名识别”,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。简单的讲,就是识别自然文本中的实体指称的边界和类别。
easyAI
2019/12/18
2.7K0
命名实体识别 – Named-entity recognition | NER
Python 数据科学入门教程:NLTK
欢迎阅读自然语言处理系列教程,使用 Python 的自然语言工具包 NLTK 模块。
ApacheCN_飞龙
2022/12/01
4.5K0
Python 数据科学入门教程:NLTK
使用Stanford NLP工具实现中文命名实体识别
使用斯坦福大学的分词器,下载地址http://nlp.stanford.edu/software/segmenter.shtml,从上面链接中下载stanford-segmenter-2014-10-26,解压之后,如下图所示
sparkexpert
2022/05/07
1.6K0
使用Stanford NLP工具实现中文命名实体识别
【命名实体识别】训练端到端的序列标注模型
导语 PaddlePaddle提供了丰富的运算单元,帮助大家以模块化的方式构建起千变万化的深度学习模型来解决不同的应用问题。这里,我们针对常见的机器学习任务,提供了不同的神经网络模型供大家学习和使用。本周推文目录如下: 3.12:【命名实体识别】 训练端到端的序列标注模型 3.13:【序列到序列学习】 无注意力机制的神经机器翻译 3.14:【序列到序列学习】 使用Scheduled Sampling改善翻译质量 3.15:【序列到序列学习】 带外部记忆机制的神经机器翻译 3.16:【序列到序列学习】 生成
用户1386409
2018/03/15
2.4K0
【命名实体识别】训练端到端的序列标注模型
NLP项目:使用NLTK和SpaCy进行命名实体识别
命名实体识别(NER)是信息提取的第一步,旨在在文本中查找和分类命名实体转换为预定义的分类,例如人员名称,组织,地点,时间,数量,货币价值,百分比等。NER用于自然语言处理(NLP)的许多领域,它可以帮助回答许多现实问题,例如:
AiTechYun
2018/09/26
7.4K0
NLP项目:使用NLTK和SpaCy进行命名实体识别
NLTK基础 | What? NLTK也能进行命名实体识别!
在上一篇<NLTK基础 | 一文轻松使用NLTK进行NLP任务(附视频)>中,简单介绍了NLTK的安装和使用。大家都知道命名实体识别作为NLP几大基础任务之一,在工业界应用也是非常广泛。那么NLTK包能不能进行命名实体识别呢?下面将详细介绍NLTK如何出色的完成命名实体识别任务!
提莫在线发育
2020/04/16
1.1K0
斯坦福的Stanford.NLP.NET:集合多个NLP工具
-欢迎 该项目包含使用使用 IKVM.NET 将 Stanford NLP.jar 软件包重新编译到.NET 中的构建脚本,这些软件经过测试可以有效工作,该工具包的介绍网站是:https://serg
企鹅号小编
2018/01/26
1.7K0
Python自然语言处理工具小结
作者:伏草惟存 来源:http://www.cnblogs.com/baiboy/p/nltk2.html 1 Python 的几个自然语言处理工具 NLTK:NLTK 在用 Python 处理自然语言的工具中处于领先的地位。它提供了 WordNet 这种方便处理词汇资源的借口,还有分类、分词、除茎、标注、语法分析、语义推理等类库。 Pattern:Pattern 的自然语言处理工具有词性标注工具(Part-Of-Speech Tagger),N元搜索(n-gram search),情感分析(senti
小小科
2018/05/03
1.3K0
Python自然语言处理工具小结
资源 | 斯坦福大学发布Stanford.NLP.NET:集合多个NLP工具
选自斯坦福 机器之心编译 参与:李泽南、Smith 近日,斯坦福大学发布了 Stanford.NLP for .Net,为自然语言处理领域的开发者们提供帮助。顾名思义,它是 Stanford NLP 为.NET 准备的版本。 链接:https://sergey-tihon.github.io/Stanford.NLP.NET/ 该项目包含使用使用 IKVM.NET 将 Stanford NLP.jar 软件包重新编译到.NET 中的构建脚本,这些软件经过测试可以有效工作,该工具包的介绍网站是:https:/
机器之心
2018/05/09
1.5K0
【NLP】竞赛必备的NLP库
本周我们给大家整理了机器学习和竞赛相关的NLP库,方便大家进行使用,建议收藏本文。
黄博的机器学习圈子
2020/09/29
1.9K0
【NLP】竞赛必备的NLP库
使用Scikit-Learn进行命名实体识别和分类(NERC)
命名实体识别和分类(NERC)是识别名称等信息单元的过程(包括人员,组织和位置名称),以及包括非结构化文本中的时间,日期,钱和百分比表达式等数值表达式。目标是开发实用且与域无关的技术,以便自动高精度地检测命名实体。
AiTechYun
2018/09/26
6.1K0
使用Scikit-Learn进行命名实体识别和分类(NERC)
8.HanLP实现--命名实体识别
笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP
mantch
2020/02/21
2.8K0
『深度应用』NLP命名实体识别(NER)开源实战教程
近几年来,基于神经网络的深度学习方法在计算机视觉、语音识别等领域取得了巨大成功,另外在自然语言处理领域也取得了不少进展。在NLP的关键性基础任务—命名实体识别(Named Entity Recognition,NER)的研究中,深度学习也获得了不错的效果。
小宋是呢
2019/08/26
1.6K0
『深度应用』NLP命名实体识别(NER)开源实战教程
NLP命名实体识别开源实战教程 | 深度应用
近几年来,基于神经网络的深度学习方法在计算机视觉、语音识别等领域取得了巨大成功,另外在自然语言处理领域也取得了不少进展。在NLP的关键性基础任务—命名实体识别(Named Entity Recognition,NER)的研究中,深度学习也获得了不错的效果。
AI科技大本营
2019/08/20
1.7K0
NLP命名实体识别开源实战教程 | 深度应用
【NLP-NER】什么是命名实体识别?
命名实体识别(Named Entity Recognition,NER)是NLP中一项非常基础的任务。NER是信息提取、问答系统、句法分析、机器翻译等众多NLP任务的重要基础工具。
用户1508658
2019/09/20
2.3K0
【NLP-NER】什么是命名实体识别?
Qwen2大模型微调入门实战-命名实体识别(NER)任务
以Qwen2作为基座大模型,通过指令微调的方式做高精度的命名实体识别(NER),是学习入门LLM微调、建立大模型认知的非常好的任务。
用户9029617
2024/06/20
1K0
Qwen2大模型微调入门实战-命名实体识别(NER)任务
相关推荐
命名实体识别的两种方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档