命名实体识别

机器学习 - 命名实体识别之Hidden Markov Modelling

爱⌒轻易说出口 提交于 2020-03-28 02:06:47
概述 命名实体识别在NLP的应用中也是非常广泛的,尤其是是information extraction的领域。Named Entity Recognition(NER) 的应用中,最常用的一种算法模型是隐式马可夫模型(Hidden Markov Modelling)- HMM。本节内容主要是通过介绍HMM的原理,以及应用HMM来做一个NER的实例演示。 HMM原理解析 在解释HMM的原理之前,先引用几个HMM的基本概念,第一个是就是隐式状态,在本文中用H表示; 第二个就是显式状态,在本文中用大写的英文字母O表示。咱们的HMM的中,就是根据咱们的显式状态O来计算隐式状态H的概率的问题,其中在HMM中有一个基本的前提条件,那就是每一个time step的隐式状态只跟它前一步的的隐式状态有关。具体是什么意思呢,大家看我下面的一幅图片,结合这幅图片来给大家解释 首先observables是大家能直接得到的信息,例如一个句子“小李和王二在天津旅游”,这个就是一个observable的sequence,是咱们能够直接得到的信息;那么咱们如何才能够得到这句话背后所包含的隐式sequences呢?这就是咱们的HMM所要解决的问题了。从上图可以看出hidden states之间是通过transition matrix来连接的,这里咱们也可以很好的看出来每一步的hidden

8.HanLP实现--命名实体识别

若如初见. 提交于 2020-02-13 02:00:23
文章目录 8. 命名实体识别 8.1 概述 8.2 基于隐马尔可夫模型序列标注的命名实体识别 8.3 基于感知机序列标注的命名实体识别 8.4 基于条件随机场序列标注的命名实体识别 8.5 命名实体识别标准化评测 8.6 自定义领域命名实体识别 8.7 GitHub 笔记转载于GitHub项目 : https://github.com/NLP-LOVE/Introduction-NLP 8. 命名实体识别 8.1 概述 命名实体 文本中有一些描述实体的词汇。比如人名、地名、组织机构名、股票基金、医学术语等,称为 命名实体 。具有以下共性: 数量无穷。比如宇宙中的恒星命名、新生儿的命名不断出现新组合。 构词灵活。比如中国工商银行,既可以称为工商银行,也可以简称工行。 类别模糊。有一些地名本身就是机构名,比如“国家博物馆” 命名实体识别 识别出句子中命名实体的边界与类别的任务称为 命名实体识别 。由于上述难点,命名实体识别也是一个统计为主、规则为辅的任务。 对于规则性较强的命名实体,比如网址、E-mail、IBSN、商品编号等,完全可以通过正则表达式处理,未匹配上的片段交给统计模型处理。 命名实体识别也可以转化为一个序列标注问题。具体做法是将命名实体识别附着到{B,M,E,S}标签,比如, 构成地名的单词标注为“B/ME/S- 地名”,以此类推。对于那些命名实体边界之外的单词

自然语言18.2_NLTK命名实体识别

六月ゝ 毕业季﹏ 提交于 2020-01-18 05:38:26
python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share 机器学习,统计项目合作QQ:231469242 http://blog.csdn.net/u010718606/article/details/50148261参考 NLTK中对于很多自然语言处理应用有着开箱即用的api,但是结果往往让人弄不清楚状况。 下面的例子使用NLTK进行命名实体的识别。第一例中,Apple成功被识别出来,而第二例并未被识别。究竟是什么原因导致这样的结果,接下来一探究竟。 In [1]: import nltk In [2]: tokens = nltk.word_tokenize('I am very excited about the next generation of Apple products.') In [3]: tokens = nltk.pos_tag(tokens) In [4]: print tokens [('I', 'PRP'), ('am', 'VBP'), ('very', 'RB'), (

基于深度学习的命名实体识别与关系抽取

送分小仙女□ 提交于 2019-12-21 05:18:17
基于深度学习的命名实体识别与关系抽取 【备注:此博文初次编辑为2019年12月19日,最新编辑为2019年12月19日】 摘要:构建知识图谱包含四个主要的步骤:数据获取、知识抽取、知识融合和知识加工。其中最主要的步骤是知识抽取。知识抽取包括三个要素:命名实体识别(NER)、实体关系抽取(RE) 和 属性抽取。其中属性抽取可以使用python爬虫爬取百度百科、维基百科等网站,操作较为简单,因此命名实体识别(NER)和实体关系抽取(RE)是知识抽取中非常重要的部分,同时其作为自然语言处理(NLP)中最遇到的问题一直以来是科研的研究方向之一。   本文将以深度学习的角度,对命名实体识别和关系抽取进行分析,在阅读本文之前,读者需要了解深度神经网络的基本原理、知识图谱的基本内容以及关于循环神经网络的模型。可参考本人编写的博文:(1)基于深度学习的知识图谱综述;(2)[深度神经网络];(3)(https://blog.csdn.net/qq_36426650/article/details/84398458)。   本文的主要结构如下,首先引入知识抽取的相关概念;其次对词向量(word2vec)做分析;然后详细讲解循环神经网络(RNN)、长短期记忆神经网络(LSTM)、门控神经单元模型(GRU);了解基于文本的卷积神经网络模型(Text-CNN);讲解隐马尔可夫模型(HMM

命名实体识别从数据集到算法实现-标注法记录-技术很旧

泄露秘密 提交于 2019-12-09 20:41:16
命名实体识别(Named Entity Recognition, NER)是 NLP 的基础任务,指从文本中识别出命名性指称项,为关系抽取等任务做铺垫。狭义上,是识别出人名、地名和组织机构名这三类命名实体(时间、货币名称等构成规律明显的实体类型可以用正则等方式识别)。当然,在特定领域中,会相应地定义领域内的各种实体类型。目前的主流工作,是将 NER当做深度学习任务来做,所以,我们需要大量的、高质量的数据。 公开数据集 首先让我们来看看常见公开数据集 CoNLL 2003(https://www.clips.uantwerpen.be/conll2003/ner/) 这个数据集包括1393篇英语新闻文章和909篇德语新闻文章。英语语料库是免费的,德国语料库需要收钱(75美元)。英语语料实际上是RCV1(Reuters Corpus, Volume 1, https://trec.nist.gov/data/reuters/reuters.html), 路透社早些年公开的一些数据集。你需要填个使用申请表(包含组织和个人两种类型), 然后就可以使用了。 CoNLL2003中, 实体被标注为四种类型: LOC (location, 地名) ORG (organisation, 组织机构名) PER (person, 人名) MISC (miscellaneous, 其他)

BiLSTM+CRF(二)命名实体识别

萝らか妹 提交于 2019-12-09 13:18:37
前言 前一篇博客【https://blog.csdn.net/jmh1996/article/details/83476061 BiLSTM+CRF (一)双向RNN 浅谈 】里面,我们已经提到了如何构建一个双向的LSTM网络,并在原来单层的RNN的基础上,修改少数几行代码即可实现。 Bi-LSTM其实就是两个LSTM,只不过反向的LSTM是把输入的数据先reverse 首尾转置一下,然后跑一个正常的LSTM,然后再把输出结果reverse一次使得与正向的LSTM的输入对应起来。 这篇博客,我们就来看看如何通过BiLSTM+CRF来进行命名实体识别的任务。 先介绍一下命名实体识别任务。 命名实体识别 通俗来说,命名实体识别,就是给一句话或一段话,设计某种算法来把其中的命名实体给找出来。啥叫命名实体呢?说白了不值一提,命名实体,其实就是实际存在的具有专门名字的物体。命名实体识别,其实就是实体名字的识别。 例如: 我 们 的 藏 品 中 有 几 十 册 为 北 京 图 书 馆 等 国 家 级 藏 馆 所 未 藏 。 其中北京图书馆就是一个专有的实体名称。 一般命名实体有分:人名、地名、组织名、机构名等等之分,根据不同的任务有不同的划分。 命名实体识别的解法 目前命名实体识别领域比较流行的方法都是把命名实体识别问题转换为一个序列标注的问题,然后通过序列标注的方法来解决。

命名实体识别 BiLSTM――CRF

匿名 (未验证) 提交于 2019-12-02 23:43:01
本篇文章假设你已有lstm和crf的基础。 BiLSTM+softmax lstm也可以做序列标注问题。如下图所示: 双向lstm后接一个softmax层,输出各个label的概率。那为何还要加一个crf层呢? 我的理解是softmax层的输出是相互独立的,即虽然BiLSTM学习到了上下文的信息,但是输出相互之间并没有影响,它只是在每一步挑选一个最大概率值的label输出。这样就会导致如B-person后再接一个B-person的问题。而crf中有转移特征,即它会考虑输出label之间的顺序性,所以考虑用crf去做BiLSTM的输出层。 BiLSTM+crf的基本思想 BiLSTM+crf的结构如图所示: 对于每一个输入我们得到一个预测label序列定义这个预测的得分为: 其中Pi,yi为第i个位置softmax输出为yi的概率,Ayi,yi+1为从yi到yi+1的转移概率,当tag(B-person,B-location。。。。)个数为n的时候,转移概率矩阵为(n+2)*(n+2),因为额外增加了一个开始位置和结束位置。这个得分函数S就很好地弥补了传统BiLSTM的不足,因为我们当一个预测序列得分很高时,并不是各个位置都是softmax输出最大概率值对应的label,还要考虑前面转移概率相加最大,即还要符合输出规则(B后面不能再跟B)

HanLP1.5.2 -python使用介绍

浪尽此生 提交于 2019-11-29 18:54:23
自然语言处理 中文分词 词性标注 命名实体识别 依存句法分析 新词发现 关键词短语提取 自动摘要 文本分类聚类 拼音简繁 http://hanlp.com/ https://github.com/hankcs/HanLP HanLP: Han Language Processing 之前需要做一个中文命名实体识别的api,看完了一些相关论文以后觉得短时间内自己实现不大现实,于是找了一些开源工具,其中哈工大的LTP效果是很好的,但是免费使用限流量,需要给钱才行; NLPIR的pynlpir似乎还不能支持命名实体识别等复杂工作,只能做一些分词之类;最后还剩下Hanlp,感谢Hanlp的作者hancks无私的将代码开源,还提供了那么详细的文档。 pyhanlp只有少数功能,其他复杂一点的功能需要使用python调用java代码来实现。 以下是api的模型部分,大多是照着文档写成的。 python调用java需要jpype库,具体安装请参考之前的博客:jpype安装的简便方法 In [1]: import jpype from jpype import * jvmPath = jpype.getDefaultJVMPath() print(jvmPath) jpype.startJVM(jvmPath) jpype.java.lang.System.out.println("hello