精华内容
下载资源
问答
  • HMM命名实体识别推荐Hanlp开源框架,个人感觉完美实现了NLPIR并且开源,可拓展性强。对于复杂的机构名和地名的识别感觉并不好,准备加入字典和提供一些实际应用中的标注数据进行训练来进行提高。 CRF作为传统机器...

    推荐一篇博客:http://blog.csdn.net/AJAXHu/article/details/48382381
    开源的WebCollector爬虫确实很好用,并且提供了网页正文提取的模块。
    提供了图形界面的简单配置,Log也比较全面,WebCollector-Hadoop是WebCollector的分布式版本。
    对比自己一直使用的Scrapy-redis,感觉WebCollector更适合工业生产。有机会完整的看一下源码,暂时先调用了其中的ContentExtractor模块。

    HMM命名实体识别推荐Hanlp开源框架,个人感觉完美实现了NLPIR并且开源,可拓展性强。对于复杂的机构名和地名的识别感觉并不好,准备加入字典和提供一些实际应用中的标注数据进行训练来进行提高。

    CRF作为传统机器学习最好的算法,我使用了CRF++-0.58的windows版本,只需要提供训练集和特征模板的编写即可进行训练,目前对于特征模板的编写还存在一定的疑惑,在PKU数据集上采用词+词性以及字+词性(这里我给每个字赋以所在词的词性)+字所在词的边界(采用了BIES标注),对测试的结果直接用每个标签计算R,P,F,没有合并,所以基于字的F达到94,我觉着有一点太高了,不是很科学。

    将来准备使用BLSTM+CRF做一下实验,毕竟这是当前最火的方式。

    展开全文
  • 什么是命名实体识别二.基于NLTK的命名实体识别三.基于Stanford的NER四.【实战案例】医学糖尿病数据命名实体识别,【Python数据挖掘解决方案】医学糖尿病数据命名实体识别​wx7dcc75bb5e655e9b.h5.xiaoe-tech.com一...

    一.什么是命名实体识别

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

    三.基于Stanford的NER

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

    【Python数据挖掘解决方案】医学糖尿病数据命名实体识别wx7dcc75bb5e655e9b.h5.xiaoe-tech.com
    13ef395bf781e7738680d10e5ca0552b.png

    、什么是命名实体识别?

    命名实体识别(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

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

    https://wx7dcc75bb5e655e9b.h5.xiaoe-tech.com/content_page/eyJ0eXBlIjozLCJyZXNvdXJjZV90eXBlIjoiIiwicmVzb3VyY2VfaWQiOiIiLCJwcm9kdWN0X2lkIjoicF81ZjI3ODYyZWU0YjAwMGU1NjhlMTQwN2EiLCJhcHBfaWQiOiJhcHByaEtBQUkzVjY2MDMifQwx7dcc75bb5e655e9b.h5.xiaoe-tech.com

    目录如下:

    1-数据与任务介绍

    2- 整体模型架构

    3-数据标签语料库处理

    4-输入样本填充补齐

    5-训练网络模型

    6-医疗数据集(糖尿病)实体识别

    展开全文
  • 本文针对航天领域命名实体识别这一特定问题,通过人工构建训练数据集、特征设计和CRF模型训练,建立了一种航天命名实体识别的高效方法。通过与基于字符串匹配的方法相比较,本文所提方法有着更高的准确率和召回率,...
  • 当然也有学者认为这个问题还没有得到很好地解决,原因主要有:命名实体识别只是在有限的文本类型(主要是新闻语料中)和实体类别(主要是人名、地名、组织机构名)中取得了不错的效果;与其他信息检索领域相比,实体...


            ~~~~~~~~近几年来,基于神经网络的深度学习方法在计算机视觉、语音识别等领域取得了巨大成功,另外在自然语言处理领域也取得了不少进展。在NLP的关键性基础任务—命名实体识别(Named Entity Recognition,NER)的研究中,深度学习也获得了不错的效果。最近,笔者阅读了一系列基于深度学习的NER研究的相关论文,并将其应用到达观的NER基础模块中,在此进行一下总结,与大家一起分享学习。

    1、NER 简介

            ~~~~~~~~NER又称作专名识别,是自然语言处理中的一项基础任务,应用范围非常广泛。命名实体一般指的是文本中具有特定意义或者指代性强的实体,通常包括人名、地名、组织机构名、日期时间、专有名词等。NER系统就是从非结构化的输入文本中抽取出上述实体,并且可以按照业务需求识别出更多类别的实体,比如产品名称、型号、价格等。因此实体这个概念可以很广,只要是业务需要的特殊文本片段都可以称为实体。

            ~~~~~~~~学术上NER所涉及的命名实体一般包括3大类(实体类,时间类,数字类)和7小类(人名、地名、组织机构名、时间、日期、货币、百分比)。
            ~~~~~~~~实际应用中,NER模型通常只要识别出人名、地名、组织机构名、日期时间即可,一些系统还会给出专有名词结果(比如缩写、会议名、产品名等)。货币、百分比等数字类实体可通过正则搞定。另外,在一些应用场景下会给出特定领域内的实体,如书名、歌曲名、期刊名等。
            ~~~~~~~~NER是NLP中一项基础性关键任务。从自然语言处理的流程来看,NER可以看作词法分析中未登录词识别的一种,是未登录词中数量最多、识别难度最大、对分词效果影响最大问题。同时NER也是关系抽取、事件抽取、知识图谱、机器翻译、问答系统等诸多NLP任务的基础。
            ~~~~~~~~NER当前并不算是一个大热的研究课题,因为学术界部分学者认为这是一个已经解决的问题。当然也有学者认为这个问题还没有得到很好地解决,原因主要有:命名实体识别只是在有限的文本类型(主要是新闻语料中)和实体类别(主要是人名、地名、组织机构名)中取得了不错的效果;与其他信息检索领域相比,实体命名评测预料较小,容易产生过拟合;命名实体识别更侧重高召回率,但在信息检索领域,高准确率更重要;通用的识别多种类型的命名实体的系统性能很差。

    2. 深度学习方法在NER中的应用

            ~~~~~~~~NER一直是NLP领域中的研究热点,从早期基于词典和规则的方法,到传统机器学习的方法,到近年来基于深度学习的方法,NER研究进展的大概趋势大致如下图所示。

    1NER图1:NER发展趋势
            ~~~~~~~~在基于机器学习的方法中,NER被当作序列标注问题。利用大规模语料来学习出标注模型,从而对句子的各个位置进行标注。NER 任务中的常用模型包括生成式模型HMM、判别式模型CRF等。条件随机场(ConditionalRandom Field,CRF)是NER目前的主流模型。它的目标函数不仅考虑输入的状态特征函数,而且还包含了标签转移特征函数。在训练时可以使用SGD学习模型参数。在已知模型时,给输入序列求预测输出序列即求使目标函数最大化的最优序列,是一个动态规划问题,可以使用Viterbi算法解码来得到最优标签序列。CRF的优点在于其为一个位置进行标注的过程中可以利用丰富的内部及上下文特征信息。

    2线图2:一种线性链条件随机场
            ~~~~~~~~近年来,随着硬件计算能力的发展以及词的分布式表示(word embedding)的提出,神经网络可以有效处理许多NLP任务。这类方法对于序列标注任务(如CWS、POS、NER)的处理方式是类似的:将token从离散one-hot表示映射到低维空间中成为稠密的embedding,随后将句子的embedding序列输入到RNN中,用神经网络自动提取特征,Softmax来预测每个token的标签。
            ~~~~~~~~这种方法使得模型的训练成为一个端到端的过程,而非传统的pipeline,不依赖于特征工程,是一种数据驱动的方法,但网络种类繁多、对参数设置依赖大,模型可解释性差。此外,这种方法的一个缺点是对每个token打标签的过程是独立的进行,不能直接利用上文已经预测的标签(只能靠隐含状态传递上文信息),进而导致预测出的标签序列可能是无效的,例如标签I-PER后面是不可能紧跟着B-PER的,但Softmax不会利用到这个信息。
            ~~~~~~~~学界提出了DL-CRF模型做序列标注。在神经网络的输出层接入CRF层(重点是利用标签转移概率)来做句子级别的标签预测,使得标注过程不再是对各个token独立分类。

    2.1 BiLSTM-CRF

            ~~~~~~~~LongShort Term Memory网络一般叫做LSTM,是RNN的一种特殊类型,可以学习长距离依赖信息。LSTM 由Hochreiter &Schmidhuber (1997)提出,并在近期被Alex Graves进行了改良和推广。在很多问题上,LSTM 都取得了相当巨大的成功,并得到了广泛的使用。LSTM 通过巧妙的设计来解决长距离依赖问题。
            ~~~~~~~~所有 RNN 都具有一种重复神经网络单元的链式形式。在标准的RNN中,这个重复的单元只有一个非常简单的结构,例如一个tanh层。

    3RNN图3:传统RNN结构
            ~~~~~~~~LSTM 同样是这样的结构,但是重复的单元拥有一个不同的结构。不同于普通RNN单元,这里是有四个,以一种非常特殊的方式进行交互。

    4LSTM图4:LSTM结构
            ~~~~~~~~LSTM通过三个门结构(输入门,遗忘门,输出门),选择性地遗忘部分历史信息,加入部分当前输入信息,最终整合到当前状态并产生输出状态。

    5LSTM图5:LSTM各个门控结构
            ~~~~~~~~应用于NER中的biLSTM-CRF模型主要由Embedding层(主要有词向量,字向量以及一些额外特征),双向LSTM层,以及最后的CRF层构成。实验结果表明biLSTM-CRF已经达到或者超过了基于丰富特征的CRF模型,成为目前基于深度学习的NER方法中的最主流模型。在特征方面,该模型继承了深度学习方法的优势,无需特征工程,使用词向量以及字符向量就可以达到很好的效果,如果有高质量的词典特征,能够进一步获得提高。

    6biLSTMCRF图6:biLSTM-CRF结构示意图

    2.2 IDCNN-CRF

            ~~~~~~~~对于序列标注来讲,普通CNN有一个不足,就是卷积之后,末层神经元可能只是得到了原始输入数据中一小块的信息。而对NER来讲,整个输入句子中每个字都有可能对当前位置的标注产生影响,即所谓的长距离依赖问题。为了覆盖到全部的输入信息就需要加入更多的卷积层,导致层数越来越深,参数越来越多。而为了防止过拟合又要加入更多的Dropout之类的正则化,带来更多的超参数,整个模型变得庞大且难以训练。因为CNN这样的劣势,对于大部分序列标注问题人们还是选择biLSTM之类的网络结构,尽可能利用网络的记忆力记住全句的信息来对当前字做标注。
            ~~~~~~~~但这又带来另外一个问题,biLSTM本质是一个序列模型,在对GPU并行计算的利用上不如CNN那么强大。如何能够像CNN那样给GPU提供一个火力全开的战场,而又像LSTM这样用简单的结构记住尽可能多的输入信息呢?
            ~~~~~~~~Fisher Yu and Vladlen Koltun 2015 提出了dilated CNN模型,意思是“膨胀的”CNN。其想法并不复杂:正常CNN的filter,都是作用在输入矩阵一片连续的区域上,不断sliding做卷积。dilated CNN为这个filter增加了一个dilation width,作用在输入矩阵的时候,会skip所有dilation width中间的输入数据;而filter本身的大小保持不变,这样filter获取到了更广阔的输入矩阵上的数据,看上去就像是“膨胀”了一般。
            ~~~~~~~~具体使用时,dilated width会随着层数的增加而指数增加。这样随着层数的增加,参数数量是线性增加的,而receptive field却是指数增加的,可以很快覆盖到全部的输入数据。

    7idcnn图7:idcnn示意图
            ~~~~~~~~图7中可见感受域是以指数速率扩大的。原始感受域是位于中心点的1x1区域:
            ~~~~~~~~(a)图中经由原始感受域按步长为1向外扩散,得到8个1x1的区域构成新的感受域,大小为3x3;
            ~~~~~~~~(b)图中经过步长为2的扩散,上一步3x3的感受域扩展为为7x7;
            ~~~~~~~~(c)图中经步长为4的扩散,原7x7的感受域扩大为15x15的感受域。每一层的参数数量是相互独立的。感受域呈指数扩大,但参数数量呈线性增加。
            ~~~~~~~~对应在文本上,输入是一个一维的向量,每个元素是一个character embedding:

    84idcnn图8:一个最大膨胀步长为4的idcnn块
            ~~~~~~~~IDCNN对输入句子的每一个字生成一个logits,这里就和biLSTM模型输出logits完全一样,加入CRF层,用Viterbi算法解码出标注结果.
            ~~~~~~~~biLSTM或者IDCNN这样的网络模型末端接上CRF层是序列标注的一个很常见的方法。biLSTM或者IDCNN计算出的是每个词的各标签概率,而CRF层引入序列的转移概率,最终计算出loss反馈回网络。

    3. 实战应用

    3.1 语料准备

    Embedding:我们选择中文维基百科语料来训练字向量和词向量。

    基础语料:选择人民日报1998年标注语料作为基础训练语料。

    附加语料:98语料作为官方语料,其权威性与标注正确率是有保障的。但由于其完全取自人民日报,而且时间久远,所以对实体类型覆盖度比较低。比如新的公司名,外国人名,外国地名。为了提升对新类型实体的识别能力,我们收集了一批标注的新闻语料。主要包括财经、娱乐、体育,而这些正是98语料中比较缺少的。由于标注质量问题,额外语料不能加太多,约98语料的1/4。

    3.2 数据增强

           ~~~~~~~对于深度学习方法,一般需要大量标注语料,否则极易出现过拟合,无法达到预期的泛化能力。我们在实验中发现,通过数据增强可以明显提升模型性能。具体地,我们对原语料进行分句,然后随机地对各个句子进行bigram、trigram拼接,最后与原始句子一起作为训练语料。
           ~~~~~~~另外,我们利用收集到的命名实体词典,采用随机替换的方式,用其替换语料中同类型的实体,得到增强语料。
           ~~~~~~~下图给出了BiLSTM-CRF模型的训练曲线,可以看出收敛是很缓慢的。相对而言,IDCNN-CRF模型的收敛则快很多。

    9BiLSTMCRF线图9:BiLSTM-CRF的训练曲线

    10IDCNNCRF线图10:IDCNN-CRF的训练曲线

    3.3 实例

    以下是用BiLSTM-CRF模型的一个实例预测结果。

    11BiLSTMCRF图11:BiLSTM-CRF预测实例

    4. 总结

    最后进行一下总结,将神经网络与CRF模型相结合的CNN/RNN-CRF成为了目前NER的主流模型。对于CNN与RNN,并没有谁占据绝对优势,各有各的优点。由于RNN有天然的序列结构,所以RNN-CRF使用更为广泛。基于神经网络结构的NER方法,继承了深度学习方法的优点,无需大量人工特征。只需词向量和字向量就能达到主流水平,加入高质量的词典特征能够进一步提升效果。对于少量标注训练集问题,迁移学习,半监督学习应该是未来研究的重点。

    展开全文
  • 参数设置 (1)训练参数 crf_learn -f 3 -c 1.5 template train.data model 1)-a CRF-L2 or CRF-L1 规范化算法选择。默认是CRF-L2。一般来说L2算法效果要比L1算法稍微好一点,虽然L1算法中非零特征的数值要比L2中大...

    1.下载

    下载地址:
    (1)官网:https://taku910.github.io/crfpp/#download(似乎被墙了)
    (2)https://sourceforge.net/projects/crfpp/
    (3)网盘下载: https://pan.baidu.com/s/1fkx258xBaXr-egRc3RDXHQ (提取码:o6kv)

    版本选择:
    Windows选择zip压缩包,Linux选择tar.gz压缩包。

    2.Windows安装

    直接解压即可使用

    3.实例测试

    选中如图所示的3个文件,复制到“CRF+±0.58\example\chunking”(一个有训练数据和测试数据的实例)。(如果提示已存在,可忽略此步骤) 1

    • doc文件夹:官方主页
    • example文件夹:四个训练示例,训练数据(test.data),测试数据(train data)和模板文件(template),执行脚本文件exec.sh
    • sdk文件夹:CRF++的头文件和静态链接库
    • clr_learn.exe:CRF++的训练程序
    • crl_test.exe:CRF++的测试程序
    • libcrffpp.dll:训练程序和测试程序需要使用的静态链接库

    打开cmd,进入“CRF+±0.58\example\chunking”目录,
    2
    输入:crf_learn template train.data model
    即,crf_learn template_file train_file model_file
    3
    生成“model”文件,模型训练成功。(本安装包已有一个model文件,可观察是否更新日期)
    打印控制台的信息:crf_learn template train.data model >> model_out.txt
    即可生成model_out.txt文件。

    输出参数:

    • iter:迭代次数。当前迭代次数达到maxiter时,迭代终止。
    • terr:标记错误率
    • serr:句子错误率
    • obj:当前对象的值。当这个值收敛到一个确定的值的时候,训练完成。
    • diff:与上一个对象之间的相对差。当此值低于eta时,训练完成。

    测试数据,并打印控制台信息:crf_test -m model test.data >output.txt
    至此,windows系统的使用测试通过,可进行后续实验。

    Linux系统的安装可查找其他资料。

    4.参数设置

    (1)训练参数

    crf_learn -f 3 -c 1.5 template train.data model
    1)-a CRF-L2 or CRF-L1
    规范化算法选择。默认是CRF-L2。一般来说L2算法效果要比L1算法稍微好一点,虽然L1算法中非零特征的数值要比L2中大幅度的小。

    2)-c float
    这个参数设置CRF的hyper-parameter。c的数值越大,CRF拟合训练数据的程度越高。这个参数可以调整过度拟合和不拟合之间的平衡度。这个参数可以通过交叉验证等方法寻找较优的参数。

    3)-f NUM
    这个参数设置特征的cut-off threshold。CRF++使用训练数据中至少NUM次出现的特征。默认值为1。当使用CRF++到大规模数据时,只出现一次的特征可能会有几百万,这个选项就会在这样的情况下起到作用。

    4)-p NUM
    如果电脑有多个CPU,那么那么可以通过多线程提升训练速度。NUM是线程数量。

    5)-m -maxiter=int
    设置最大的迭代次数(默认为10k)

    6)-e -eta=float
    设置终止标准(默认为0.0001)

    (2)测试参数

    crf_test -m model test.data
    1)-v可以显示预测标签的概率值;
    2)-n可以显示不同可能序列的概率值

    5.调用Python接口

    (说明:此步骤没有通过。原因是Python使用build编译,需要通过匹配的VS版本中的C/C++环境,而我暗转的VS版本与其不匹配。具体可参考:https://www.cnblogs.com/yyds/p/7065637.html。还是Linux自带的gcc好用啊…)
    方便模型训练好以后,进行应用和测试
    解压tar.gz压缩包,cmd进入该目录的Python文件夹
    执行:
    (1)python setup.py build
    (2)python setup.py install
    若提示:error: Unable to find vcvarsall.bat;则是因为在windows环境中,python 的 Setup需要调用一个vcvarsall.bat的文件,该文件需要安装c++编程环境才会有。
    解决方法:安装Visual Studio,有社区版,下载完成后需要钩选组件,这里是选择了Python和C++的相关包。安装时间可能有点长。
    (3)然后把python 目录下的 “libcrfpp.dll” 文件复制到python安装目录下的site-packages目录下。
    (4)import CRFPP ,可成功导入

    展开全文
  • 使用CRF++进行命名实体识别

    千次阅读 2017-08-03 16:18:28
    首先明白什么是命名实体...比较三个算法的优缺点,本文使用CRF工具CRF++来进行实验做命名实体识别CRF++在windows下面不需要安装,只需要下载二进制文件,下载地址https://drive.google.com/drive/folders/0B4y35
  • 为提高医院对复杂数据的处理效率,减轻工作人员的压力,本文提出了一种基于条件随机场(CRF)模型和特征模板结合的算法,来识别中文电子病历中的命名实体单元,识别准确率可以达到92.9%,可以有效地识别电子病历命名...
  • 在用LSTM+CRF命名实体识别任务时,由于pytorch框架的crf需要自己实现,网上的很多教程都跳过了一些关键部分导致自己难以理解。本文用来记录自己的相关理解,仅针对线性链式的CRF。欢迎指正...
  • title: 命名实体识别学习-从基础算法开始(02)lstm+crf序列标注 date: 2020-06-22 21:23:07 tags: 命名实体识别学习-从基础算法开始(02)lstm+crf序列标注 文章目录命名实体识别学习-从基础算法开始(02)lstm+...
  • 命名实体识别相关算法

    千次阅读 2018-07-31 21:05:51
    转自:...     最近在学习命名实体识别,在查阅资料的同时,对命名实体识别的概念以及常用方法做了一下整理汇总,方便以后学习和查阅。 &nb...
  • BiLSTM+CRF(二)命名实体识别

    千次阅读 2018-12-03 21:15:11
    前言 前一篇博客里面,我们已经提到了如何构建一个双向的LSTM网络,并在原来单层的RNN的基础上,修改少数几行代码即可实现。...这篇博客,我们就来看看如何通过BiLSTM+CRF来进行命名实体识别的任务...
  • CRF命名实体识别的一些tips

    千次阅读 2017-06-28 10:31:27
    CRF命名实体识别的一些心得
  • NER(中文实体命名识别)光健字: 中文命名实体识别 NER BILSTM CRF IDCNN BERT摘要:对中文命名实体识别一直处于知道却未曾真正实践过的状态,此次主要是想了解和实践一些主流的中文命名实体识别的神经网络算法。...
  • 基于HMM和CRF命名实体识别

    千次阅读 2019-07-20 17:15:03
    基于HMM和CRF命名实体识别 前段时间,上了机器学习课程,然后老师布置了个大作业,使用具体的模型应用到具体的任务 我写了一个基于HMM和CRF命名实体识别代码。在此总结一下。 数据集 数据集是从网上获取的一个...
  • CRF++命名实体识别

    千次阅读 2016-09-23 11:24:43
    使用CRF++的windows版本 doc文件:就是官方主页的内容。 example文件夹:有四个任务的训练数据、测试数据和模板文件。 sdk文件夹:CRF++的头文件和静态链接库。 crf_learn.exe:CRF++的训练程序 crf_test.exe:...
  • 命名实体标注 对于给定的长度为 m 的序列 X,假设标注的结果为 [ y1, … , ym ] ,yi=PER/LOC/ORG/O,则命名实体标注问题可以表示在已知序列 X 的条件下,找出使得 [ y1, … , ym ] 的概率 P ( y1, … , ym ) 最大...
  • 命名实体识别(NER)】(1):命名实体识别综述

    万次阅读 多人点赞 2019-03-23 09:41:44
    命名实体识别综述 什么是命名实体识别命名实体识别(Named Entity Recognition,简称NER),又称作**“专名识别”,是自然语言处理中的一项基础任务,应用范围非常广泛。命名实体一般指的是文本中具有特定意义...
  • 今天我们来学习 NER——Named entity recognition,命名实体识别,即识别出文档中具有特定意义的实体,例如人名、地名、机构名、专有名词等。 命名实体识别主要用来提取结构化信息,是信息提取、问答系统、句法分析...
  • 为提高医院对复杂数据的处理效率,减轻工作人员的压力,本文提出了一种基于条件随机场(CRF)模型和特征模板结合的算法,来识别中文电子病历中的命名实体单元,识别准确率可以达到92.9%,可以有效地识别电子病历命名...
  • pytorch实现BiLSTM+CRF用于NER(命名实体识别) 在写这篇博客之前,我看了网上关于pytorch,BiLstm+CRF的实现,都是一个版本(对pytorch教程的翻译), 翻译得一点质量都没有,还有一些竟然说做得是词性标注,B,I,O是...
  • NLP序列标注&命名实体识别相关算法

    千次阅读 2019-01-22 14:45:05
    结构学习:序列标注 维特比算法(一) 维特比算法(二) CRF算法简介入门 TensorFlow教程——Bi-LSTM+CRF进行序列标注(代码浅析) 自然语言处理PPT笔记-NLP数学基础 Tensorflow进行POS词性...命名实体识别(NER) ...
  • 前面我们用隐马尔可夫模型(HMM)自己尝试训练过一个分词器,其实 HMM 也可以用来训练命名实体识别器,但在本文,我们讲另外一个算法——条件随机场(CRF),来训练一个命名实体识别器。 浅析条件随机场(CRF) 条件...
  • CRF命名实体识别

    2020-04-18 12:24:31
    crf_learn.exe CRF++的训练程序 crf_test.exe CRF++的预测程序 libcrfpp.dll 训练程序和预测程序需要使用的静态链接库 template conlleval.pl 2.初始数据准备 人民日报1998年01月原始语料库 199801.txt 数据...
  • 基于BiLSTM-CRF命名实体识别1. 任务说明1.1 任务定义1.2 语料说明2. 实验环境3. 算法说明(按文件说明)3.1 model.py3.2 data.py3.3 predict.py3.4 evaluate.py3.5 run.py4. 实验结果5. 参考资料6. 源码 1. 任务...
  • 6.1 命名实体识别介绍 学习目标: 了解什么是命名实体识别 了解命名实体识别的作用 了解命名实体识别常用方法 了解医学文本特征 什么是命名实体识别: 命名实体识别(Named Entity Recognition,NER)就是...
  • 基于BiLSTM+CRF命名实体识别

    千次阅读 2020-04-25 16:26:00
    一、命名实体识别问题的建模 命名实体识别是自然语言处理中的一项很基础的任务,是指从文本中识别出特定命名指向的词,比如人名、地名和组织机构名等。目前最常用,最成功的建模方法是将这一问题建模成序列标注问题...
  • ner是named entity recognition的缩写,即命名实体识别,是在纯文本中识别出实体来,传统的实体包括:人名,地名,机构名等。在地图业务中,实体包括:省市区县,poi,aoi等。ner是序列标注任务的一种,序列标注包括...
  • 在上一篇文章《用隐马尔可夫模型(HMM)做命名实体识别——NER系列(二)》中,我们使用HMM模型来做命名实体识别,将问题转化为统计概率问题,进行求解。显然,它的效果是非常有限的。 在深度学习技术火起来之前,...
  • CRF++命名实体识别(NER)初步试探。CRF++是著名的条件随机场的开源工具,支持windows,linux系统。本文中CRF++,指的不是一种模型,不是一种算法,而是一个开源工具。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,752
精华内容 1,100
关键字:

命名实体识别算法crf