python 实体识别_英文实体识别的python实现
英文实体识别主要的工具有nltk和Stanford NER:
nltk是用python编写的自然语言处理框架。
Stanford NER是用java编写的实体识别工具,通过加载不同的语言模型可以支持不同的语言识别。
下面分别用这两个实现实体识别。
nltk
安装
安装nltk
pip install nltk
pip install numpy
安装数据
>>> import nltk
>>> nltk.download() # 选择下载全部,耗时比较长
使用
nltk通过内置的函数进行实体识别,参考这里。
import nltk
text = "University of California is located in California, United States"
words = nltk.word_tokenize(text) # 分词
tags = nltk.pos_tag(words) # 词性识别
ners = nltk.ne_chunk(tags, binary=False) # 实体识别
print ners
output:
(S
(ORGANIZATION University/NNP)
of/IN
(GPE California/NNP)
is/VBZ
located/VBN
in/IN
(GPE California/NNP)
,/,
(GPE United/NNP States/NNPS))
Stanford NER
官方给出的python接口有两种:
pyner: a Python interface to Stanford NER.
NLTK contains an interface to Stanford NER.
配置使用环境
Stanford NER使用java,所以首先要安装好java环境,*需要安装java8*。配置好JAVAHOME环境变量。
java安装路径一般是:/usr/lib/jvm/java....
环境变量:
sudo vim /etc/profile
在最后添加:
JAVA_HOME=/usr/lib/jvm/java... # 安装路径
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export JRE_HOME
export PATH
保存后重载:
source /etc/profile
pyner(linux系统)
pyner需要开启Stanford NER server,然后通过http或tcp/ip4调用
安装pyner
$ git clone https://github.com/dat/pyner.git
$ cd pyner
$ sudo python setup.py install
开启Stanford NER server
$ cp stanford-ner.jar stanford-ner-with-classifier.jar
$ jar -uf stanford-ner-with-classifier.jar classifiers/english.all.3class.distsim.crf.ser.gz
$ java -mx500m -cp stanford-ner-with-classifier.jar edu.stanford.nlp.ie.NERServer -port 9191 -loadClassifier classifiers/english.all.3class.distsim.crf.ser.gz -outputFormat inlineXML
使用pyner调用
>>> import ner
>>> tagger = ner.SocketNER(host='localhost', port=9191)
>>>print tagger.get_entities("University of California is located in California, United States")
output:
{'ORGANIZATION': ['University of California'], 'LOCATION': ['California', 'United States']}
nltk.tag.stanford module
这里是使用nltk的接口模块,实际还是调用的Stanford NER进行处理,参考这里。
安装
安装nltk和前面一样,不过这里下载好Stanford NER后需要配置一个STANFORD_MODELS环境变量指向模型文件夹。
如F:\stanford_ner_model\stanford-ner-2015-12-09\classifiers。
使用python调用
from nltk.tag import StanfordNERTagger
from nltk.tokenize import word_tokenize
# StanfordNERTagger类接收两个参数:模型文件和Stanford NER的jar文件
st = StanfordNERTagger('F:\stanford_ner_model\stanford-ner-2015-12-09\classifiers\english.all.3class.distsim.crf.ser.gz','F:\stanford_ner_model\stanford-ner-2015-12-09\stanford-ner-3.6.0.jar')
text = "University of California is located in California, United States"
tokenized_text = word_tokenize(text)
classified_text = st.tag(tokenized_text)
for tree in classified_text:
if tree[1] != 'O':
print tree
output:
(u'University', u'ORGANIZATION')
(u'of', u'ORGANIZATION')
(u'California', u'ORGANIZATION')
(u'California', u'LOCATION')
(u'United', u'LOCATION')
(u'States', u'LOCATION')
效果比较
比较上面三个输出,可以发现,pyner的输出已经分类,并且合并了连续实体;nltk.tag.stanford module可以分辨连续实体但未合并;nltk不能分辨连续实体。
python 实体识别_英文实体识别的python实现相关推荐
- python 命名实体识别_命名实体识别的两种方法
作者:Walker 目录 一.什么是命名实体识别 二.基于NLTK的命名实体识别 三.基于Stanford的NER 四.总结 一 .什么是命名实体识别? 命名实体识别(Named Entity Rec ...
- 命名实体识别_命名实体识别的几种标注形式
选择一个正确的用例和工作流 Choosing the right recipe and workflow 所以你有一个需要解决的NER问题,以及需要注释的数据.你要尽可能高效地完成它.但是如何为你的用 ...
- python 人脸识别_手把手教你用python实现人脸识别,识别率高达99.38%
之前本人在实训时需要实现人脸识别这个功能,当时是借助百度的人脸识别api,这个需要注册账号,还需要用到密钥.操作起来也不麻烦,代码也不多.就是如果网速跟不上,返回的结果时,速度有点慢.当时也没那么在意 ...
- 命名实体识别python_命名实体识别的两种方法
作者 | Walker [磐创AI导读]:本文主要介绍自然语言处理中的经典问题--命名实体识别的两种方法. 目录 一.什么是命名实体识别 二.基于NLTK的命名实体识别 三.基于Stanford的NE ...
- python 命名实体识别_使用Python和Keras的有关命名实体识别(NER)的完整教程
假设您是报纸行业的编辑,每天都会收到数千个故事.您将如何找到与体育,政治等特定领域相关的故事?您会讲完所有这些故事吗?无权利?一个可以帮助您划分为不同类别的系统怎么样?该系统还可以执行复杂的任务,例如 ...
- pyltp实体识别_哈工大 PYLTP 安装 排坑指南
0 哈工大 PYLTP 简介 pyltp 是 LTP 的 Python 封装,提供了分词,词性标注,命名实体识别,依存句法分析,语义角色标注的功能. github网址:HIT-SCIR/pyltp 在 ...
- 命名实体识别_用膨胀卷积进行命名实体识别 NER
BiLSTM+CRF 是命名实体识别中最为流行的模型,但是 LSTM 需要按顺序处理输入的序列,速度比较慢.而采用 CNN 可以更高效的处理输入序列,本文介绍一种使用膨胀卷积进行命名实体识别的方法 I ...
- BilSTM 实体识别_NLP-入门实体命名识别(NER)+Bilstm-CRF模型原理Pytorch代码详解——最全攻略
最近在系统地接触学习NER,但是发现这方面的小帖子还比较零散.所以我把学习的记录放出来给大家作参考,其中汇聚了很多其他博主的知识,在本文中也放出了他们的原链.希望能够以这篇文章为载体,帮助其他跟我一样 ...
- BilSTM 实体识别_NLP入门实体命名识别(NER)+BilstmCRF模型原理Pytorch代码详解——最全攻略...
来自 | 知乎 作者 | seven链接 | https://zhuanlan.zhihu.com/p/79552594编辑 | 机器学习算法与自然语言处理公众号本文仅作学术分享,如有侵权,请联系 ...
- python 颜色识别_在python中构建颜色识别器
python 颜色识别 In this post, I will show you how to build your own color recognizer using Python. This ...
最新文章
- OpenCV学习(4) Mat的基本操作(1)
- java读取大txt文件_使用java读取txt里边的文件内容并获取大小(M).txt
- 企业微信的corpsecret在哪里?
- golang编译工具LiteIDE的调试使用方法(F5)
- bfv同态加密_五分钟了解同态加密及三种常见方案
- android发布新版忘记keystore(jks)密码终极解决方案
- 【C++入门】C++类和对象
- 20200727每日一句
- 幅相频率特性曲线的绘制(1)
- 什么是ARP协议,如何查看ARP表项、如何配置静态ARP?
- 单片机中断实验 EX0
- 我的第一个MASM32程序(MASM32环境配置)
- vim etc mysql my.cnf_mysql配置——my.cnf配置讲解
- 朋友入职中软一个月(外包华为)就离职了!
- NFS客户端不能unmount 之解决
- rollup打包工具
- 《Python数据分析与挖掘实战》第7章-聚类+绘制雷达图
- c 语言从指针得到对象,c – 获取指向由智能指针指向的对象的指针 – Ivalue错误...
- 先收藏! 立体库的维护保养规范
- pip换源-pip国内源