我有一些关键字,例如emotion perception ability
,students’ motivation
,self-efficacy
。目标是将这些关键字映射到心理学的相应类别(-ies)。在这种情况下,我知道apriori的答案是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
现在我想添加一些OPTIONAL子句,将我的关键字(使用OR)与抽象(dbo:abstract
)中的术语进行比较。是否可以使用SPARQL执行此操作?或者我应该使用SPARQL来获取摘要,然后使用例如进行所有进一步的文本处理。 Java还是Python?
此外,我们高度赞赏其他一些可能有助于实现这一目标的方法。
答案 0 :(得分:0)
您可以使用sparql将数据检索为文本,但是应该使用文本数据分析技术或text mining
来确定文本是否与查询匹配这是一门完整的科学,但幸运的是,为了实现相关的算法,存在许多语言(包括Java和Python)的很多库。 Here is a list of software on wikipedia。 NLTK以这项工作而闻名,并且有Python绑定。
在你的情况下,我想到很多方面,但我远非专家,所以我的想法可能是错的:
创建每个所需类别(教育心理学......)摘要的语料库,并且对于给定的摘要A,将A与每个类别C的每个摘要的每个摘要进行比较。比较的结果将给出每个类别A属于C的分数/可能性。(cf fuzzy sets)
比较可以用vector space model来实现,这与词汇相似性有关。
Named Entities Recognition可以帮助检测与特定类别相关的作者,技术或工具的名称。
主要思想如下:一旦您通过使用其词汇,作者,参考或其他任何内容来定义每个类别的特定特征,您可以为任何摘要确定所有类别的成员分数。
所以,要问的真正问题是我应该使用哪个评分函数?。 答案很大程度上取决于数据和您想要的结果。当你说摘要是关于教育心理学时,你必须知道为什么。然后将其作为评分函数实施。
作为一个侧面节点,我补充说,通过对语料库的训练,神经网络可以通过自动学习绕过评分。我不太了解该领域的内容。