您可以使用 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”,因为
- “wrote”通过S连接到“Marley” ,将主语名词连接到限定动词。
- “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 甚至不认识这个动词。