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. 【综述】闲话模型压缩之网络剪枝(Network Pruning)
  2. iis 网页HTTP 错误 404.3 - Not Found解决方案
  3. SQL Server 2005中创建CLR存储过程
  4. 【直播回看】「EDGE X Kubernetes · 云原生在边缘的实践与应用」
  5. toolbar + DrawerLayout 实现抽屉菜单
  6. mysql把一个数据库中的数据复制到另一个数据库中的表 2个表结构相同
  7. 莉莉丝《剑与远征》:基于阿里云全站加速提升用户体验
  8. python爬去百度百科词条_Python爬虫入门学习实践——爬取小说
  9. swagger2使用步骤
  10. linux下定时执行任务方法【转】
  11. 使用 HTML 和 CSS 创建响应式猫猫图片库
  12. python爬虫: 爬一个英语学习网站
  13. SONY重拳出击,开始涉足移动领域----Playstation Mobile必然崛起
  14. entrez检索系统要服务器吗,Entrez检索系统的简介.doc
  15. 大学毕业生推荐表的计算机水平,大学毕业生就业推荐表学校鉴定评语
  16. The server encountered an internal error () that prevented it from fulfilling this request.
  17. STM32CubeIDE配置使用
  18. OpenCV打开摄像头截图
  19. ryuyan 方差分析_如何使用R语言做不同设计的方差分析(ANOVA)、简单效应检验、事后多重比较?...
  20. 如何免费建立一个网站?

热门文章

  1. oracle北京时区,ORACLE中的时区(time zone)
  2. 重庆医科大学赵浏阳教授招收博士、招聘博士后
  3. AI只调整填充色的透明度
  4. 实施ERP系统需要注意哪些方面?
  5. 量手知姓氏 :算命测姓氏 之 数学原理
  6. Java爬虫(三)后台发请求获取页面解析数据
  7. ESP32使用MLX90614红外测温传感器
  8. GBASE 8s UDR内存管理_04_mi_zalloc
  9. 【Python】遗传算法求解二元函数最值
  10. 前端知识之JavaScript