disambiguation.py

#!/usr/bin/python3
import pymysql
import json
import requests
from SimilarityEN import similaritydef findCandidates(entity):# 打开数据库连接db = pymysql.connect(host=host, port=3306,user=username, passwd=password, db=dbname)# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()# SQL 查询语句sql = "SELECT * FROM t_wikidata_human_content WHERE `name` LIKE " + "'" + "%" + entity + "'"cursor.execute(sql)persons = cursor.fetchall()candidates = []for person in persons:candidates.append({'wiki_id': person[1], 'name': person[2], 'description': person[3]})return candidatesdef getEntity(query):url = 'http://ip:8018/getNer'properties = {'text': query, 'lang': 'en'}resp = requests.get(url, params=properties).json()entities = []for entity in resp:if entity['ner'] == "PERSON":entities.append(entity)return entitiesdef match(query):entities = getEntity(query)points = []for entity in entities:     #单一实体消歧candidates = findCandidates(entity['word'])texts = []for candidate in candidates:texts.append(candidate['description'])try:indent = similarity(texts, query)sort = sorted(enumerate(indent), key=lambda x: x[1])   ##b[-1][0] 最大值的原下标max_index = sort[-1][0]except:max_index = 0try:points.append({'wiki_id': candidates[max_index]['wiki_id'], 'name': candidates[max_index]['name'],'begin': entity['begin'], 'end': entity['end']})except:points.append({'wiki_id': -1,'begin': entity['begin'], 'end': entity['end']})points = json.dumps(points, indent=4)return points

similarity.py

# -*- coding:utf-8 -*-import codecs
import re
from gensim import corpora, models, similarities
from nltk.tokenize import WordPunctTokenizerdef wordtokenizer(sentence):words = WordPunctTokenizer().tokenize(sentence)return wordsdef tokenization(text, stopwordpath):stop_words = stopwordpathstopwords = codecs.open(stop_words, 'r', encoding='utf8').readlines()stopwords = [w.strip() for w in stopwords]result = []text = re.sub("[-',{:+}|.()/?!·;]", ' ', text).lower()words = wordtokenizer(text)for word in words:if word not in stopwords:result.append(word)return resultdef similarity(texts, query, stopwordpath='stop.txt'):corpus = []for text in texts:corpus.append(tokenization(text, stopwordpath))dictionary = corpora.Dictionary(corpus)     # 生成特征字典,为每个出现在语料库中的单词分配了一个独一无二的整数编号iddoc_bow = [dictionary.doc2bow(text) for text in corpus]     # 函数doc2bow() 简单地对每个不同单词的出现次数进行了计数,并将单词转换为其编号,然后以稀疏向量的形式返回结果。tfidf = models.TfidfModel(doc_bow)      # 每一个特征的IDF值的统计tfidf_bow = tfidf[doc_bow]      # 计算tfidfquery = tokenization(query, stopwordpath)query_bow = dictionary.doc2bow(query)index = similarities.MatrixSimilarity(tfidf_bow)sims = index[query_bow]return sims

实体消歧(链接到实体库)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 【极简】实体识别和消歧

    文章目录 命名实体识别 消除歧义 TF-IDF句向量(有监督) 词周边特征 TF-IDF特征(有监督) 词向量(无监督) 基于规则的内联修改权重方法 变种:地名消歧 正则表达式 命名实体识别 impo ...

  10. 【NLP入门教程】七、词义消歧

    词义消歧(Word Sense Disambiguation, WSD)其目标是确定文本中词汇的正确含义.由于许多单词具有多种含义,词义消歧对于理解和分析文本具有关键作用. 1. 词义消歧的挑战 词义 ...

最新文章

  1. 在高并发分布式情况下生成唯一标识id
  2. js/jq判断鼠标滚轮方向
  3. IDEA 一直不停的scanning files to index解决办法
  4. de.hybris.platform.servicelayer.dto.converter.ConversionException
  5. 信息学奥赛一本通 1965:【14NOIP普及组】珠心算测验 | 洛谷 P2141 [NOIP2014 普及组] 珠心算测验
  6. 1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有解。
  7. 【云速建站】页面产品维护简述
  8. Intel 64/x86_64/IA-32/x86处理器基本执行环境 (1) - 32位执行环境概述
  9. 遥感数据免费获取网址
  10. Navicat 安装配置
  11. websphere html 缓存,如何清除WebSphere类缓存
  12. oracle 无法归档日志,报all online log need archiving
  13. 世界著名设计公司-网址介绍
  14. mysql 触发器delete_MySQL之触发器
  15. Hyper-V相关Powershell cmdlets
  16. brpc源码分析——数据报处理过程
  17. [转]记一次linux(被)入侵,服务器变矿机~
  18. C# WPF 为Word右键添加自定义菜单项
  19. 2021011206贾天乐实验五
  20. 坏道的基本介绍及恢复方法

热门文章

  1. 达梦数据库创建公共同义词和私有同义词
  2. 读《半世烟雨,半世桃花 李清照词传》有感
  3. 生命的火花盛开与如幻如梦
  4. 国内首批第三方支付牌照正式发放
  5. 【C语言笔记】【宏定义系列】 判断是否2的n次幂对齐
  6. 网页错误在线检测网站汇总
  7. 怎么不让WORD自动检查语法和拼写错误,福利在这里,不让WORD自动检查语法和拼写错误该如何设置
  8. [好歌推荐4]侯德建 - 归去来兮
  9. 另类搞笑:自我指涉例句不完全收集
  10. Kaldi 使用,egs下通用样例及功能小结