尊敬的读者您好:笔者很高兴自己的文章能被阅读,但原创与编辑均不易,所以转载请必须注明本文出处并附上本文地址超链接以及博主博客地址:https://blog.csdn.net/vensmallzeng。若觉得本文对您有益处还请帮忙点个赞鼓励一下,笔者在此感谢每一位读者,如需联系笔者,请记下邮箱:zengzenghe@gmail.com,谢谢合作!

最近跟进的项目中时刻不离NER任务,笔者团队采用过多个版本bi-lstm+CRF程序去实现NER的bi-lstm+CRF,感觉每个版本都有每个版本的优势,所以下面就来分享第一个版本,该版本中的输入词向量是随机生成的并且所有的.py文件中有不容易读懂的地方,笔者都进行了注释,方便自己也方便大家。

1、如果需要本文源码请自行转向“https://download.csdn.net/download/vensmallzeng/11212457”。

2、该版本主要包括以下几个部分:

checkpoints文件夹用于保存训练好的模型以及参数;

data文件夹用于保存训练、验证、测试数据等;

tensorboard文件夹用于保存张量可视化的数据;

3、Data_process.py文件包含一些数据预处理的函数如read_data、build_vocab、sequence2id以及process_seq等,各函数具体功能见注释。

4、Parameters.py文件见其名知其义,应该存放一些用于模型训练、测试的参数。

5、biLstm_Crf.py文件主要是用于实现bi-Lstm+CRF功能,下面将着重介绍该文件。

首先随机生成词向量(每一次训练都会重新生成,所以省去了预训练词向量的工作),生成的词向量被用于查询bi-Lstm+CRF模型的输入词向量。

然后构建bi-Lstm+CRF模型,该模型的输入为查询得到的词向量。

bi-Lstm层:

CRF层:

损失函数用的是最大似然函数,这里采用梯度下降算法来优化损失函数,所以需要给损失函数加负号:

优化损失函数

模型搭建好后要考虑给模型喂数据,因此需要将数据按要求进行打包处理之后方能喂给模型。

模型测试调用代码

实际应用调用代码

6、Train_Model.py文件主要是用于训练bi-Lstm+CRF模型,并将训练好的模型参数保存下来,以便后期直接调用。

7、serve.py文件主要是用于实际应用,可以实现输入一句话,自动提取出人名、地点和机构。

主体代码如下:

实际效果如下:

最后想和大家谈谈几个关于Bi-lstm+CRF的个人总结:

① 与传统Lstm不同,双向Lstm同时考虑了过去的特征(通过前向过程提取)和未来的特征(通过后向过程提取)。说直白点,后向过程其实相当于将原始序列逆向输入到Lstm中。因此从这个角度来看,双向Lstm相当于两个Lstm(一个正向输入序列,一个反向输入序列),最后将两者的输出结合起来作为最终的结果。

② 采用CRF层的原因:Bi-lstm考虑了输入词(字符)向量序列的上下文信息,CRF考虑了tag之间的依赖关系信息,因此二者结合无疑可以选择出最适合的预测tag序列。

如:句子的开始单词的标签类型应该是BO,而不是I;限制一些格式,B-Person I-Person是合理的,B-Person I-Organization是不合理的

③ 需要训练的参数有:Bi-lstm中的参数与CRF中转移概率矩阵A

④  Bi-lstm+CRF训练时采用监督学习方法,通过最大化预测为真实标记序列的概率(将概率取对数再取负,然后用梯度下降算法优化)来更新Bi-lstm中的参数与CRF中转移概率矩阵A。虽然刚开始训练“真实标记序列不会对应最大的概率值”,但通过样本的连续迭代优化,最终会实现“真实标记序列应该对应最大的概率值”;Bi-lstm+CRF测试时,直接根据训练好的参数求出所有可能的预测序列对应的得分(这里应该会用到维特比算法),最后取对应最大得分的预测序列作为最终预测结果。

⑤ Bi-lstm+CRF的输入是一组词(字符)向量,输出是一组预测tag序列。

参考文献:

【1】https://blog.csdn.net/bobobe/article/details/80489303

日积月累,与君共进,增增小结,未完待续。

Bi-lstm+CRF实现NER(随机生成词向量)相关推荐

  1. python生成词向量_词向量是如何生成的

    终于开了NLP的坑了(`・д・´),这次聊聊词向量是怎样生成的.现在有很多现成的模型,cbow,skip-gram,glove等,在python不同的库里面就可以调用(比如fasttext,genis ...

  2. NLP(4) | 用词向量技术简单分析红楼梦人物关系用n-gramma生成词向量word2vect进行模型训练

    NLP(1) | 词向量one hot编码词向量编码思想 NLP(2) | 中文分词分词的概念分词方法分类CRFHMM分词 NLP(3)| seq to seq 模型 前言:出于种种原因,总是不自觉把 ...

  3. 聚类结果不好怎么办_使用bert-serving生成词向量并聚类可视化

    谷歌推出的Bert语言预处理模型的强大不必多说.而Bert-serving可以直接调用谷歌训练好的字向量,然后很轻松就可以生成我们需要的词向量.这对于我们nlp的追随者来说实验又简单了不少.我今天利用 ...

  4. 文本相似度计算(切词、生成词向量,使用余弦相似度计算)

    项目需求 有多个文本,分别是正负样本,使用余弦相似度计算负样本与正样本的样本相似度,若准确率高,后期可判断新加样本与正样本的相似度. 输入如下所示: content label 今天下午,在龙口市诸由 ...

  5. 【PTM】ELMo:通过预训练语言模型生成词向量

    今天学习的是 AllenNLP 和华盛顿大学 2018 年的论文<Deep contextualized word representations>,是 NAACL 2018 best p ...

  6. python生成词向量_gensim的word2vec如何得出词向量(python)

    首先需要具备gensim包,然后需要一个语料库用来训练,这里用到的是skip-gram或CBOW方法,具体细节可以去查查相关资料,这两种方法大致上就是把意思相近的词映射到词空间中相近的位置. 语料库t ...

  7. tensorflow实现Word2Vec——生成词向量以及降维可视化

    以下代码来源与<Tensorflow实战>,来自Github上的tensorflow开源实现,代码非常简洁,可读性高,对于研究NLP.tensorflow.python编程等有很大帮助. ...

  8. Java生成词云!你喜欢得书都在图里!

    在做数据分析得时候,生成词云图是很常见得需求,正常情况下大部分都是通过python去采集数据并且生成,异常强大,本文来说说java如何生成词云! 在github上找轮子得时候,发现了这么一个项目:Ku ...

  9. 使用GloVe生成中文词向量

    首先从官网上下载glove 下载地址:https://github.com/stanfordnlp/GloVe 这个工具是需要在lunix下执行的 解压后得到下图 把要生成词向量的文本扔进这个文件夹中 ...

最新文章

  1. 量子物理学家:如果宇宙中所有物体突然消失,会剩下一个「空宇宙」吗?
  2. python爬取图片-Python超简单的爬取网站中图片
  3. 【每日一题】8月14日题目精讲 [SCOI2010]游戏
  4. python语句大全input_input提示文字 Python基础输入函数,if-else语句,if-elif
  5. 【HNOI】 lct tree-dp
  6. 1319. 连通网络的操作次数
  7. IDEA访问不到SpringBoot项目webapp下的内容
  8. Matlab Robitic Toolbox学习笔记Day1
  9. 如何将一个完整项目推到码云_「码云下载项目」如何通过Git将本地项目提交到码云或GitHub...
  10. 基于javafx+sqlserver的仓库管理系统
  11. 基于Java在线学习系统设计与实现
  12. k8s修改集群IP--不重置集群
  13. 分享WEB快速开发工具
  14. c语言搜索算法伪代码,FFT算法伪代码
  15. win10教育版加域提示错误
  16. 实现网站二维码扫描登录
  17. 共享计算机桌面需要密码,win10局域网共享文件需要输密码怎么办?_win10访问共享文件需要密码的解决办法-爱纯净...
  18. 论文笔记(1):Efficient Convex Completion of Coupled Tensors using Coupled Nuclear Norms
  19. 双11购书大优惠!独家优惠券,折后再减,赶紧来抢啊!
  20. css表格随内容变化,css 使表格随着内容自动适应宽度

热门文章

  1. 劲舞团登陆不上消息服务器,《劲舞团》在内的多款产品服务器无法登陆
  2. 身份证扫描识别ocr技术
  3. 【数理逻辑】预备知识
  4. 计算机操作系统--存储管理
  5. 教师评计算机课缺点及建议,教师听课评课优缺点(教师听课记录评价与建议)
  6. 105页5万字XXX县30MWp光伏发电项目可行性报告
  7. mac 命令行su使用
  8. html样式border倒三角写法,纯CSS - border绘制三角形(各种角度)
  9. Ubantu或容器安装CV2
  10. 解决win10桌面图标显示为白色方框