我通过比较依赖性来尝试两个句子之间的语义匹配
我从两个不同的句子得到两个斯坦福依赖树。我想比较并获得句子之间语义匹配的分数。
for(TypedDependency td1 : dependencyList1)
{
for(TypedDependency td2 : dependencyList2)
{
score = td1.compareTo(td2);
}
}
dependencyList1
和dependencyList2
分别是来自句子1和句子2的所有依赖项的列表。
我使用compareTo
函数,它给出了-1,0,1
的分数
然后我将得分平均得出最终得分
我不知道如何计算这些分数。
是否有更好的方法来比较和识别相似的依赖关系
任何帮助将不胜感激。
答案 0 :(得分:4)
compareTo()
为您提供依赖关系之间的排序,例如排序(请参阅https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html)。要找到类似的依赖关系,首先需要将“类似”的确切形式化,然后制作自定义评分函数。
除了简单的平等之外,自然度量标准正在折叠*subj
(nsubj,nsubjpass,csubj,csubjpass)和*obj
(dobj,iobj)等内容。如果你关心弧的端点,检查引理匹配而不是字匹配可能是一个好的开始。向量空间中的相似性(例如,使用word2vec或Glove)也非常有效。
可以在以下位置找到依赖项列表供参考:http://universaldependencies.github.io/docs/u/dep/index.html