如何找到文本所涉及的 wikidata(或 freebase 或 DBpedia)主题列表?

2024-04-13

我正在寻找一种解决方案来提取文本(或 html)文档所涉及的概念列表。我希望这些概念成为 wikidata 主题(或 freebase 或 DBpedia)。

例如 ”《Bad》是迈克尔·杰克逊的歌曲" 应该返回 Michael Jackson(艺术家,wikidata Q2831)和 Bad(歌曲,wikidata Q275422)。如此例所示,系统应该对拼写错误 (Mikael) 和歧义 (Bad) 具有鲁棒性。

理想情况下,系统应该跨多种语言工作,它应该同时处理短文本和长文本,并且当不确定时它应该返回多个主题(例如,糟糕的歌曲+糟糕的专辑)。此外,理想情况下它应该是开源的并具有 python API。

是的,这听起来像是圣诞老人的清单。有任何想法吗?

Edit

我检查了一些解决方案,但到目前为止还没有灵丹妙药。

  • NLTK 解析文本并提取“命名实体”(AFAIU,引用名称的句子的一部分),但它不返回维基数据主题,仅返回纯文本。这意味着它可能不明白“我向警长开枪" 是鲍勃·马利 (Bob Marley) 的一首歌曲的名称,它会将其视为一个句子。
  • OpenNLP 的作用大致相同。
  • Wikidata 有一个搜索 API,但一次只能搜索一个术语,并且不处理歧义消除。
  • 有一些商业服务(OpenCalais、AlchemyAPI、CogitoAPI...),但恕我直言,没有一个真正出色。

您可以使用 Spacy 检索命名实体,然后使用搜索 API 将它们链接到 WikiData。

对于 Spacy 与命名实体不匹配的句子的剩余部分,您可以从句子中创建一个 ngram 列表,从最大的 ngram 开始,您可以使用 WikiData 搜索 API 来查找 WikiData 主题。

词性标注可以很好地利用,也就是说语法解析信息更强大,因为你可以知道单词之间的关系。例如,给出以下输出链接语法 http://abiword.org/projects/link-grammar/:

Found 8 linkages (8 had no P.P. violations)
    Linkage 1, cost vector = (UNUSED=0 DIS= 0.15 LEN=9)

    +-------------------------Xp-------------------------+
    +----------->WV---------->+                          |
    +-------Wd------+         +---------Osn--------+     |
    |       +---G---+----Ss---+----Os----+         |     |
    |       |       |         |          |         |     |
LEFT-WALL Bob.m Marley[!] wrote.v-d Natural[!] Mystic[!] . 

您可以看出主题是“Bob Marley”,因为

  1. “wrote”与“Marley”相连S http://abiword.org/projects/link-grammar/dict/section-S.html它将主语名词与有限动词连接起来。
  2. “Marley”通过以下方式连接到“Bob”G http://abiword.org/projects/link-grammar/dict/section-G.html将专有名词连接在一起。

因此,“Bob Marley”是一个很好的实体候选者(而且它的两个单词都大写)。

鉴于上面的解析“树”,即使“自然”和“神秘”位于句子的同一侧,也很难判断它们是否相关。

链接语法提供的第二个解析具有相同的成本向量,并将“Natural Mystic”再次与 G 连接在一起。

就这个:

    Linkage 2, cost vector = (UNUSED=0 DIS= 0.15 LEN=9)

    +-------------------------Xp-------------------------+
    +----------->WV---------->+                          |
    +-------Wd------+         +---------Os---------+     |
    |       +---G---+----Ss---+          +----G----+     |
    |       |       |         |          |         |     |
LEFT-WALL Bob.m Marley[!] wrote.v-d Natural[!] Mystic[!] .

因此,在我看来,“Bob Marley”和“Natural Mystic”是维基数据搜索的良好候选者。

这是语法和拼写正确的简单问题。

以下是对同一句子 11 个小写字母的解析:

Linkage 1, cost vector = (UNUSED=1 DIS= 0.15 LEN=14)

    +------------------------Xp------------------------+
    +----------------------Wa---------------------+    |
    |       +------------------AN-----------------+    |
    |       |        +-------------AN-------------+    |
    |       |        |                  +----AN---+    |
    |       |        |                  |         |    |
LEFT-WALL Bob.m marley[?].n [wrote] natural.n mystic.n . 

LG 甚至不认识这个动词。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何找到文本所涉及的 wikidata(或 freebase 或 DBpedia)主题列表? 的相关文章

  • 检索任意日期之前/之后最后更新的属性

    我有兴趣检索 WikiData 项目的属性 但前提是该属性是在某个日期之前或之后添加或修改的 所以我有这个SPARQL查询获取 Q24 的所有属性 SELECT itemLabel propLabel statement property
  • 如何获取给定维基数据 ID 的语句列表?

    我唯一能做的就是这个链接 https www wikidata org w api php action wbgetentities ids Q568 format jsonfm 但这会产生大量无用的数据 我需要的是获取给定项目的所有语句
  • 如何使用 nltk 从字符串中提取名称

    我正在尝试从非结构化字符串中提取名称 印度 这是我的代码 text Balaji Chandrasekaran Bangalore Senior Business Analyst Lead Business Analyst An accom
  • 是否可以将单词附加到现有的 OpenNLP POS 语料库/模型中?

    有没有办法训练现有的 Apache OpenNLP POS Tagger 模型 我需要向模型添加一些特定于我的应用程序的专有名词 当我尝试使用以下命令时 opennlp POSTaggerTrainer type maxent model
  • 大量在线对话文本的情感分析

    标题说明了一切 我有一个 SQL 数据库 其中充满了在线对话文本 我已经用 Python 完成了这个项目的大部分内容 所以我想使用 Python 的 NLTK 库来完成此操作 除非有一个strong不这样做的理由 数据的组织方式为Threa
  • 在 MATLAB 中对文本进行聚类

    我想在 MATLAB 中对文本进行层次凝聚聚类 说吧 我有四句话 I have a pen I have a paper I have a pencil I have a cat 我想把上面的四个句子聚类一下 看看哪个更相似 我知道统计工具
  • SPARQL 查询未产生预期结果

    我使用此 SPARQL 查询来获取欧洲国家 地区列表 SELECT item itemLabel WHERE item wdt P31 wd Q6256 item wdt P30 wd Q46 item wdt P361 wd Q46 it
  • 如何使用 SPARQL 从 Wikidata 获取属性标签

    我正在使用 SPARQLWrapper 将 SPARQL 查询发送到 Wikidata 目前我正在尝试查找实体的所有属性 例如 使用一个简单的元组 例如 wd Q11663 a b 这本身是有效的 但我试图为返回的属性和实体找到人类可读的标
  • 耶拿:如何推断数据/性能问题

    我想使用 Jena 的推理功能 但在使用 InfModel 时遇到一些性能问题 这是我的本体的简化概述 特性 hasX Ranges intersection X inverse properties isXOf hasSpecialX R
  • 如何检索维基数据中的分类详细信息

    我有一个实例列表如下 myinstances word2vec tf idf dijkstra s algorithm 对于每个myinstance在上面的列表中 我想找到 1 What are the other instances of
  • 文本文件的信息增益计算?

    我正在尝试 使用信息增益 PCA 和遗传算法进行文本分类 但表演完之后预处理 词干提取 停用词删除 TFIDF 在文档中我很困惑如何继续进行信息获取部分 my out file包含word在那里TFIDF value like 字 TFID
  • 使用 nltk 从德语文本中提取单词

    我正在尝试从德语文档中提取单词 当我使用 nltk 教程中描述的以下方法时 我无法获取具有特定于语言的特殊字符的单词 ptcr nltk corpus PlaintextCorpusReader Corpus words nltk Text
  • 如何从单词列表中查找 DF 中的匹配单词并在新列中返回匹配的单词[重复]

    这个问题在这里已经有答案了 我有一个包含 2 列的 DF 并且有一个单词列表 list of words lt c tiger elephant rabbit hen dog Lion camel horse df lt tibble ti
  • protege 中的自反属性

    This https ufile io rcv9m是我用 protege 5 创建的本体 如果我做cl1 and cl2不相交 那么本体是不一致的 但是如果我取消选中is friend of反身性的 本体论不再不一致 我的本体有什么问题吗
  • OpenNLP 训练中的“截止”和“迭代”是什么意思?

    是什么意思cut off and iteration用于 OpenNLP 培训 或者自然语言处理 我只需要对这些术语进行外行解释 据我认为 迭代是算法重复的次数 截止是一个值 如果文本的值高于某个特定类别的截止值 它将映射到该类别 我对吗
  • 如何找到文本所涉及的 wikidata(或 freebase 或 DBpedia)主题列表?

    我正在寻找一种解决方案来提取文本 或 html 文档所涉及的概念列表 我希望这些概念成为 wikidata 主题 或 freebase 或 DBpedia 例如 Bad 是迈克尔 杰克逊的歌曲 应该返回 Michael Jackson 艺术
  • 提取给定节点的所有父节点

    我正在尝试使用以下命令提取每个给定 GO Id 节点 的所有父级EBI RDF sparql 端点 https www ebi ac uk rdf services sparql 我是根据this https stackoverflow c
  • R 中基因列表(使用 ENTREZID)的基因本体 (GO) 分析?

    我对 GO 分析非常陌生 我有点困惑如何对我的基因列表进行分析 我有一个基因列表 n 10 gene list SYMBOL ENTREZID GENENAME 1 AFAP1 60312 actin filament associated
  • rdf:seeAlso 和 rdfs:seeAlso 之间的区别

    有什么区别rdf seeAlso and rdfs seeAlso 当我可以使用时rdf seeAlso当我可以使用时rdfs seeAlso 你能举出一些例子吗 首先 请注意rdf and rdfs分别是常用于引用 RDF 语法和 RDF
  • 如何使用 tf-idf 选择停用词? (非英语语料库)

    我已经成功评估了tf idf 函数 http en wikipedia org wiki Tf idf对于给定的语料库 如何找到每个文档的停用词和最佳词 据我所知 给定单词和文档的 tf idf 较低意味着它不是选择该文档的好单词 停用词是

随机推荐