零基础入门--中文命名实体识别(BiLSTM+CRF模型,含代码).pdfVIP

零基础入门--中文命名实体识别(BiLSTM+CRF模型,含代码).pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
零基础⼊门--中⽂命名实体识别(BiLSTM+CRF模型,含代码) ⾃⼰也是⼀个初学者,主要是总结⼀下最近的学习,⼤佬见笑。 中⽂分词 说到命名实体抽取,先要了解⼀下基于字标注的中⽂分词。 ⽐如⼀句话 我爱北京天安门”。 分词的结果可以是 “我/爱/北京/天安门”。 那什么是基于字标注呢? “我/O 爱/O 北/B 京/E 天/B 安/M 门/E”。 就是这样,给每个字都进⾏⼀个标注。我们可以发现这句话中字的标注⼀共有四种。他们分别代表的意义如下。 B | 词⾸ M | 词中 E | 词尾 O | 单字 B表⽰⼀个词的开始,E表⽰⼀个词的结尾,M表⽰词中间的字。如果这个词只有⼀个字的话,⽤O表⽰。 命名实体识别 数据处理 了解了中⽂分词,那么实体识别也差不多。就是把不属于实体的字⽤O标注,把实体⽤BME规则标注,最后按照BME规则把实体提取出来 就ok了。 这个数据集⼀个包含了6个实体类别: time: 时间 location: 地点 person_name: ⼈名 org_name: 组织名 company_name: 公司名 product_name: 产品名 例 : {{product_name:浙江在线杭州}}{{time:4⽉25 ⽇}}讯 (记者{{person_name: 施宇翔}} 通讯员 {{person_name:⽅英}})。 每个实体⽤都⽤⼤括号括了起来,并标明实体类别。当然⾃⼰标注的时候也不⼀定要这么标,只要能提取出来就可以。 然后我们要做的就是把原始数据按照BMEO规则变成字标注的形式,以便模型训练。这使⽤python实现还是⽐较简单的,嫌⿇烦的可以看 我github⾥的代码。按字标注后结果如下。 浙/B_product_name 江/M_product_name 在/M_product_name 线/M_product_name 杭/M_product_name 州/E_product_name 4/B_time ⽉/M_time 2/M_time 5/M_time ⽇/E_time 讯/O (/O 记/O 者/O /B_person_name 施/M_person_name 宇/M_person_name 翔/E_person_name /O 通/O 讯/O 员/O /O ⽅/B_person_name 英/E_person_name )。 然后我们习惯按照标点符号把⼀个长句分成⼏个短句,反正⼀般实体⾥⾯也没有标点符号。结果如下。 浙/B_product_name 江/M_product_name 在/M_product_name 线/M_product_name 杭/M_product_name 州/E_product_name 4/B_time ⽉/M_time 2/M_time 5/M_time ⽇/E_time 讯/O 记/O 者/O /B_person_name 施/M_person_name 宇/M_person_name 翔/E_person_name /O 通/O 讯/O 员/O /O ⽅/B_person_name 英/E_person_name 然后的思路就是建⽴⼀个word2id词典,把每个汉字转换成id。这⾥习惯现按照数据集中每个汉字出现的次数排序,id从1开始。 再建⽴⼀个tag2id词典,把每⼀个字标注的类型转换成id。这⾥的顺序我就随便搞的。 之后就把刚按标点分开的数据,按照⼀⼀对应的顺序,把汉字和每个字的标签转换成id,分别存到两个数组⾥⾯,⼀起保存到⼀个pkl⽂件 中,这样模型使⽤时候就可以直接读取,不⽤每次都处理数据了。这⾥习惯把每⼀句话都转换成⼀样的长度。这个长度当然是⾃⼰设置的, ⽐它长的就把后⾯舍弃,⽐它短的就在后⾯补零。 这⾥第⼀个数组⾥是这句话汉字转换成的id,第⼆个数组⾥存的是这句话每个字的标注转换成的id。 训练 我的 github ⾥有两个版本,pytorch 版直接⽤的pytorch tutorial⾥的 Bilstm+crf 模型。 运⾏ train.py 训练即可。由于使⽤的是 cpu,⽽且也没有使⽤ batch,所以训练速度⽐较慢。想简单跑⼀下代码的话,建议只使⽤部分数 据跑⼀下。pytorch 暂时不再更新。 开始训练 使⽤ python train.py 开始训练,训练的模型会存到 model ⽂件夹中。 使⽤预训练的词向量 使⽤ python train.py pretrained 会使⽤预训练的词

您可能关注的文档

文档评论(0)

166****9181 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档