英文实体识别主要的工具有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实现相关推荐

  1. python 命名实体识别_命名实体识别的两种方法

    作者:Walker 目录 一.什么是命名实体识别 二.基于NLTK的命名实体识别 三.基于Stanford的NER 四.总结 一 .什么是命名实体识别? 命名实体识别(Named Entity Rec ...

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

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

  3. python 人脸识别_手把手教你用python实现人脸识别,识别率高达99.38%

    之前本人在实训时需要实现人脸识别这个功能,当时是借助百度的人脸识别api,这个需要注册账号,还需要用到密钥.操作起来也不麻烦,代码也不多.就是如果网速跟不上,返回的结果时,速度有点慢.当时也没那么在意 ...

  4. 命名实体识别python_命名实体识别的两种方法

    作者 | Walker [磐创AI导读]:本文主要介绍自然语言处理中的经典问题--命名实体识别的两种方法. 目录 一.什么是命名实体识别 二.基于NLTK的命名实体识别 三.基于Stanford的NE ...

  5. python 命名实体识别_使用Python和Keras的有关命名实体识别(NER)的完整教程

    假设您是报纸行业的编辑,每天都会收到数千个故事.您将如何找到与体育,政治等特定领域相关的故事?您会讲完所有这些故事吗?无权利?一个可以帮助您划分为不同类别的系统怎么样?该系统还可以执行复杂的任务,例如 ...

  6. pyltp实体识别_哈工大 PYLTP 安装 排坑指南

    0 哈工大 PYLTP 简介 pyltp 是 LTP 的 Python 封装,提供了分词,词性标注,命名实体识别,依存句法分析,语义角色标注的功能. github网址:HIT-SCIR/pyltp 在 ...

  7. 命名实体识别_用膨胀卷积进行命名实体识别 NER

    BiLSTM+CRF 是命名实体识别中最为流行的模型,但是 LSTM 需要按顺序处理输入的序列,速度比较慢.而采用 CNN 可以更高效的处理输入序列,本文介绍一种使用膨胀卷积进行命名实体识别的方法 I ...

  8. BilSTM 实体识别_NLP-入门实体命名识别(NER)+Bilstm-CRF模型原理Pytorch代码详解——最全攻略

    最近在系统地接触学习NER,但是发现这方面的小帖子还比较零散.所以我把学习的记录放出来给大家作参考,其中汇聚了很多其他博主的知识,在本文中也放出了他们的原链.希望能够以这篇文章为载体,帮助其他跟我一样 ...

  9. BilSTM 实体识别_NLP入门实体命名识别(NER)+BilstmCRF模型原理Pytorch代码详解——最全攻略...

    来自 | 知乎   作者 | seven链接 | https://zhuanlan.zhihu.com/p/79552594编辑 | 机器学习算法与自然语言处理公众号本文仅作学术分享,如有侵权,请联系 ...

  10. python 颜色识别_在python中构建颜色识别器

    python 颜色识别 In this post, I will show you how to build your own color recognizer using Python. This ...

最新文章

  1. OpenCV学习(4) Mat的基本操作(1)
  2. java读取大txt文件_使用java读取txt里边的文件内容并获取大小(M).txt
  3. 企业微信的corpsecret在哪里?
  4. golang编译工具LiteIDE的调试使用方法(F5)
  5. bfv同态加密_五分钟了解同态加密及三种常见方案
  6. android发布新版忘记keystore(jks)密码终极解决方案
  7. 【C++入门】C++类和对象
  8. 20200727每日一句
  9. 幅相频率特性曲线的绘制(1)
  10. 什么是ARP协议,如何查看ARP表项、如何配置静态ARP?
  11. 单片机中断实验 EX0
  12. 我的第一个MASM32程序(MASM32环境配置)
  13. vim etc mysql my.cnf_mysql配置——my.cnf配置讲解
  14. 朋友入职中软一个月(外包华为)就离职了!
  15. NFS客户端不能unmount 之解决
  16. rollup打包工具
  17. 《Python数据分析与挖掘实战》第7章-聚类+绘制雷达图
  18. c 语言从指针得到对象,c – 获取指向由智能指针指向的对象的指针 – Ivalue错误...
  19. 先收藏! 立体库的维护保养规范
  20. pip换源-pip国内源

热门文章

  1. 陈强教授《机器学习及R应用》课程 第十二章作业
  2. 科学计算机上lg怎么打,科学计算器对数
  3. 人类700万年(震撼的极简人类史)
  4. C程序设计第五版谭浩强课后答案 第八章习题答案
  5. 用混淆矩阵计算kappa系数
  6. ios Reading from private effective user settings
  7. 男神程序员对准男神程序员们的忠告
  8. 怎么解决Myeclipse导入项目中文乱码?
  9. django_jquery_ajax二级联动菜单
  10. php fpm在哪配置,php配置php-fpm启动参数及配置详解