将句中识别的实体与知识库中实体进行匹配,解决实体歧义问题。 可利用上下文本相似度进行识别。
本文准备了两个测试数据集,entity_list.csv是50个实体,valid_data.csv是需要消歧的语句。
结果提交在submit目录中,命名为entity_disambiguation_submit.csv。
格式为:第一列是需要消歧的语句序号,第二列为多个“实体起始位坐标-实体结束位坐标:实体序号”以“|”分隔的字符串。

需要进行实体消歧的语句如下:

实体类别如下:

下面讲解具体的实现步骤:
1.导入数据

import jieba
import pandas as pd# TODO:将entity_list.csv中已知实体的名称导入分词词典
entity_data = pd.read_csv('../data/entity_disambiguation/entity_list.csv', encoding = 'utf-8')# TODO:对每句句子识别并匹配实体
valid_data = pd.read_csv('../data/entity_disambiguation/valid_data.csv', encoding = 'gb18030')
  1. 建立关键词组
    将需要进行实体消歧的实体存进keyword_list
import collectionss = ''
keyword_list = []
for i in entity_data['entity_name'].values.tolist():s += i + '|'
for k,v in collections.Counter(s.split('|')).items():if v > 1:keyword_list.append(k)
  1. 生成tfidf矩阵
from sklearn.feature_extraction.text import TfidfVectorizertrain_sentence = []
for i in entity_data['desc'].values:train_sentence.append(' '.join(jieba.cut(i)))vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(train_sentence)
  1. 获取包含关键词的句子中关键词所属的entity_id
import numpy as np
from sklearn.metrics.pairwise import cosine_similaritydef get_entityid(sentence):id_start = 1001 a_list = [' '.join(jieba.cut(sentence))]res = cosine_similarity(vectorizer.transform(a_list),X)[0]top_idx = np.argsort(res)[-1]return id_start + top_idx
  1. 将计算结果存入文件
row = 0
result_data = []
neighbor_sentence = ''
for sentence in valid_data['sentence']:res = [row]for keyword in keyword_list:if keyword in sentence:# 查询关键词在句子中的索引k_len = len(keyword)ss =''for i in range(len(sentence)-k_len+1):if sentence[i:i+k_len] == keyword:s = str(i) + '-' +str(i+k_len) + ':'  # 拿到 x-x:if i > 10 and i + k_len < len(sentence)-9:neighbor_sentence = sentence [i-10:i+k_len+9]elif i < 10:neighbor_sentence = sentence [:20]elif i + k_len > len(sentence)-9:neighbor_sentence = sentence [-20:]s +=  str(get_entityid(neighbor_sentence))   # 拿到 x-x:idss += s + '|'    # 拿到 x-x:id|x-x:idres.append(ss[:-1])  # 拼接成[0, 'x-x:id|x-x:id']result_data.append(res)row += 1
pd.DataFrame(result_data).to_csv('../submit/entity_disambiguation_submit.csv', index=False)

7.最后我们可以打印一下保存的结果

pd.read_csv('../submit/entity_disambiguation_submit.csv')

打印结果如下

格式为: 起始位置-结束位置|实体类别
我们可以看一下第一条 3-6:1008|109-112:1008|187-190:1008,确实是符合的。


在具体的实现过程中,我们可以通过测试数据的准确率去判断所抽取的字符长度是否合理,调整特征的抽取方式来优化准确率。

以上代码及训练数据已上传至github,有兴趣的同学可以点击这里查看。谢谢!

命名实体消歧的代码实现相关推荐

  1. 【工程处理技巧一篇】基于半规则数据的命名实体消歧识别【未完】

    作者:finallyly 出处:博客园(转载请注明作者和出处) 看到这篇文章的标题,您一定会以为此篇博客要讲解一个何等高深的算法.其实不然,本篇博客旨在分享笔者在处理那些繁杂.冗踏.低端甚至于极其TM ...

  2. 知识图谱(五)——实体消歧

    一.任务概述 多样性--同一实体在文本中会有不同的指称.eg:飞人.帮主.老大和MJ都指美国篮球运动员迈克尔·乔丹 歧义性--相同的实体指称在不同的上下文中可以指不同的实体.eg:迈克尔·乔丹指美国篮 ...

  3. 【创新实训】BERT4EL,基于文本相似度的实体消歧实现

    任务描述 现有douban.mtime.maoyan三个来源的电影,包含名称.简介.导演.演员.类型等等属性. 需要相同的电影融合为一个电影条目,其中maoyan数量很少,可以合并到mtime中. 参 ...

  4. 信息抽取之实体消歧,统一

    1.前言 信息抽取相关内容可以参考信息抽取简介 和关系抽取详解 2.实体消歧的本质 如小米,它是一个实体,在有些句子中表示"小米公司",但在某些语句下它表示一种谷物 又比如: 怎么 ...

  5. 【NLP】BiLSTM 命名实体识别 手写代码

    [参考:pytorch_BiLSTM 命名实体识别 手写代码_哔哩哔哩_bilibili] [参考:shouxieai/nlp-bilstm_crf-ner: nlp-bilstm+crf-ner] ...

  6. nlp(贪心学院)——实体消歧、实体统一、指代消解、句法分析

    任务212:Entity Disambiguation (实体消歧)介绍 小米是公司还是吃的? 苹果是公司还是吃的? 根据左边的上下文找出左边的James Craig到底是右边(1)(2)(3)哪个J ...

  7. 实体统一,实体消歧, 指代消解

    指代消解:比较难,目前还没有得到很好的结果.

  8. 命名实体如何进行概念消歧?

    1 引言 命名实体概念消歧是命名实体消歧(英语:Named Entity Disambiguation)的一个重要研究子领域(命名实体概念可见本文3.1章).什么叫概念消歧了?在这里举一个简单例子进行 ...

  9. 文献阅读课10-Neural Relation Extraction for Knowledge Base Enrichment(提取+嵌入+消歧+规范化联合模型,实体已知,仅关系抽取,多词实体)

    文章目录 Abstract 1.Introduction 2. 相关工作 2.2 Entity-aware Relation Extraction 3.提出的模型 3.1 Solution Frame ...

  10. 论文浅尝 | 利用Lattice LSTM的最优中文命名实体识别方法

    本文转载自公众号:机器之心. 选自arXiv 作者:Yue Zhang.Jie Yang 机器之心编译 参与:路.王淑婷 近日,来自新加坡科技设计大学的研究者在 arXiv 上发布了一篇论文,介绍了一 ...

最新文章

  1. 计算机教案word格式模板,用自定义模板编辑教案
  2. iconv 文件编码转换
  3. Linux基础知识1
  4. 组件生命周期管理和通信方案
  5. 纪中C组模拟赛总结(2019.7.5)
  6. php中reset函数,PHP reset()函数
  7. html表单与python交互,HTML表单不能与python一起使用
  8. css叠层_CSS 中重要的层叠概念
  9. CCF201803-1 跳一跳
  10. 人工神经网络简介和单层网络实现AND运算--AForge.NET框架的使用(五)
  11. 什么是信息系统安全等级保护
  12. 使用 github + jekyll 搭建个人博客
  13. 【数字信号调制】基于matlab GUI QPSK调制+解调【含Matlab源码 646期】
  14. java P1195 口袋的天空
  15. ctfshow菜狗杯webshell wp
  16. layui 数字步进器_光音移动设计规范 — 表单类
  17. 超级电容锂电池混合储能Simulink仿真
  18. 【SAP-CO】成本中心实际过账
  19. 云计算技术及应用选择题
  20. vue实现数字动态翻牌器

热门文章

  1. 如何手动启动消防广播_消防应急广播的设置要求是怎样的?
  2. RCWL-0516微波雷达感应开关 人体感应传感器,迷你多普勒雷达
  3. 百度网盘不限速下载10M/S
  4. office修复找不到msi_安装Office2007,总是提示找不到OfficeMUI.msi
  5. 什么叫51单片机最小系统
  6. [Tushare] 通过复权因子计算前复权价格、后复权价格
  7. ES5实现组合继承的原理
  8. MLX90614红外测温模块的使用
  9. Qt 样式表、绘图事件设置渐变色
  10. 景区门票预约系统_无预约,不出游!免费景区门票赶紧预约~