如何使用 DBPedia 和 SPARQL 为关键字分配合适的科学类别?

How to assign a suitable science category to keywords, using DBPedia and SPARQL?

我有一些关键字,例如 emotion perception abilitystudents’ motivationself-efficacy。目标是将这些关键字映射到相应的心理学类别。在这种情况下,我先验地知道答案是 Educational psychology,但是我想使用 DBPedia 本体获得相同的答案。

使用以下查询,我能够提取不同的心理学分支和相应的摘要:

SELECT DISTINCT ?subject ?abstract
WHERE {
?concept rdfs:label "Branches of psychology"@en .
?concept ^dct:subject ?subject .
?subject dbo:abstract ?abstract .
} 
LIMIT 100

现在我想添加一些可选子句,用于将我的关键字(使用 OR)与摘要中的术语 (dbo:abstract) 进行比较。是否可以使用 SPARQL 执行此操作?或者我应该只使用 SPARQL 来获取摘要,然后使用例如Java 或 Python?

此外,高度赞赏可能有助于实现目标的其他一些方法的想法。

您可以使用 sparql 以文本形式检索数据,但决定文本是否与查询匹配应该使用文本数据分析技术或 text mining

这是一门完整的科学,但幸运的是 许多语言的库(包括 Java 和 Python)存在以实现相关算法. Here is a list of software on wikipedia。 NLTK 以这项工作而闻名,并且有一个 Python 绑定。

对于你的情况,我想了很多方法,但我不是专家,所以我的想法可能是错误的:

创建每个所需类别(教育心理学等)的摘要语料库,并且,对于给定的摘要 A,将 A 与每个类别 C 的每个摘要的每个摘要进行比较。比较的结果将为A 属于 C 的每个类别 a score/likelihood。 (cf fuzzy sets)

可以使用 vector space model 来实现比较,这适用于词汇相似性。

Named Entities Recognition 可以帮助检测与特定类别相关的作者、技术或工具的名称。

主要思想如下:一旦定义了每个类别的特定特征,通过使用其词汇、作者、参考文献或其他任何内容,您就可以为任何摘要确定所有类别的成员分数。

所以,真正要问的问题是 我应该使用哪个评分函数?。 答案在很大程度上取决于数据和您想要的结果。当你说一篇摘要是关于教育心理学的时候,你必须知道为什么。然后将其作为评分函数实现。

作为辅助节点,我补充说,通过在语料库上进行训练,神经网络可以通过自动学习绕过评分。我对那个领域的了解还不够多。