2

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

例如“ Bad is a song by Mikael Jackson ”应该返回 Michael Jackson(艺术家,wikidata Q2831)和 Bad(歌曲,wikidata Q275422)。如本例所示,系统应对拼写错误 (Mikael) 和歧义 (Bad) 具有鲁棒性。

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

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

编辑

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

  • NLTK 解析文本并提取“命名实体”(AFAIU,指代名称的句子的一部分),但它不返回 Wikidata 主题,只是纯文本。这意味着它可能不会理解“ I shot the sheriff ”是 Bob Marley 的一首歌曲的名称,而是将其视为一个句子。
  • OpenNLP 的作用大致相同。
  • Wikidata 有一个搜索 API,但它一次只有一个词,而且它不处理歧义。
  • 有一些商业服务(OpenCalais、AlchemyAPI、CogitoAPI ......)但没有一个真正闪耀,恕我直言。
4

1 回答 1

3

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

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

词性标注可以很好地利用,因为你可以知道单词之间的关系,所以说语法解析信息更强大。例如,给出来自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”通过S连接到“Marley” ,将主语名词连接到限定动词。
  2. “Marley”使用连接专有名词的G连接到“Bob”。

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

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

链接语法提供的第二个解析具有相同的成本向量,并将“自然神秘”与 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 甚至不认识这个动词。

于 2016-11-09T19:10:00.707 回答