2015-05-28 2 views
0

Я пытаюсь семантическое соответствие между двумя предложениями путем сравнения зависимостей.
Я получаю два дерева зависимости Stanford от двух разных предложений. Я хочу сравнить и получить оценку для семантического матча между предложениями.
сравнить TypedDependencies от дерева анализатора зависимостей Stanford NLP

for(TypedDependency td1 : dependencyList1) 
    { 
     for(TypedDependency td2 : dependencyList2) 
     { 
      score = td1.compareTo(td2); 
     } 
    } 

dependencyList1 и dependencyList2 приведен список всех зависимостей от sentences1 и предложения 2 соответственно. Я использую функцию compareTo, которая выдает десятки -1,0,1.
Затем я сравнял счет, чтобы получить окончательный результат.
Я не знаю, как рассчитываются эти баллы.
Есть ли лучший способ сравнить и идентифицировать похожие зависимости.
Любая помощь будет оценена по достоинству.

ответ

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

+0

Спасибо за предложения. В «аналогичном» я хотел найти точную зависимость, то есть слово губернатора, зависимое слово и отношение между ними должны совпадать. Я создам собственную функцию подсчета очков. –

Смежные вопросы