Как найти сходство между двумя деревьями зависимостей, используя spaCy?

#python #tree #nlp #spacy

#python #дерево #nlp #spacy

Вопрос:

Я работаю над задачей с ответами на вопросы. Я планирую использовать синтаксический анализ зависимостей, чтобы найти возможные ответы из отрывка к запросу. Однако я не уверен, как я могу найти сходство между деревьями зависимостей запроса и предложениями из отрывка соответственно. Ниже приведен воспроизводимый код.

 import spacy
from spacy import displacy
nlp = spacy.load('en_core_web_sm')

doc1 = nlp('Wall Street Journal just published an interesting piece on crypto currencies')
doc2 = nlp('What did Wall Street Journal published')

displacy.render(doc1, style='dep', jupyter=True, options={'distance': 90})
displacy.render(doc2, style='dep', jupyter=True, options={'distance': 90})
  

Комментарии:

1. И в чем именно проблема, с которой вы столкнулись? Все, что вы в данный момент делаете, это отображение деревьев, нет попытки решить это.

2. @Lomtrur Я хочу найти сходство между парой деревьев зависимостей.

3. И что вы пытались решить? Похоже, вы ровно ничего не пробовали (кроме отображения деревьев синтаксического анализа) и теперь ожидаете, что кто-то решит всю проблему за вас.

4. @Lomtrur Я хочу решить задачу с ответами на вопросы с помощью синтаксического анализа зависимостей. Я прошу вас решить проблему целиком. Просто хочу найти способ сопоставить 2 дерева зависимостей.

Ответ №1:

Возможно, это то, что вы ищете:

https://github.com/tomkwiat/dependency-graph-similarity-measure

Это на Java, но должно быть легко портировать на Python.

Еще одна вещь, которую вы могли бы изучить, — это статьи о сходстве графов ядра.

Комментарии:

1. Большое спасибо @David

2. рад помочь, я знал, что несколько лет назад нашел несколько хороших статей о том, что вы именно хотите сделать, но я не могу вспомнить название и не нахожу их, но попробуйте, это хорошо изученная тема, сходство древовидных графиков

3. Конечно, я попробую это.