Как я могу определить, является ли это отрицанием глагола в предложении с использованием spacy (или другой библиотеки)? - PullRequest
0 голосов
/ 18 июня 2020

.. Всем привет! Я работаю над проектом НЛП и хочу определить, есть ли отрицание с данным глаголом в предложении

Например: функция «Is_there_negation» должна возвращать «True» со следующими параметрами:

text:"I don't want to eat right now"
verb:"eat"

Как я могу выполнить эту функцию (я действительно новичок в НЛП)

import spacy
nlp = spacy.load("en_core_web_sm")


def Is_there_negation(doc,verb):
    for token in doc :
        if(token.dep_=="neg" and token.head.text==verb):
            return True

        elif(token.text==verb):
            for tk in token.subtree:
                .
                .
                .

    return False    

Заранее спасибо

1 Ответ

0 голосов
/ 18 июня 2020

Это довольно сложно. С точки зрения синтаксиса c, eat не инвертируется в предложении, это вспомогательное слово want , которое инвертируется, как вы можете видеть в анализе зависимости предложения .

enter image description here

Что может сделать задание:

  1. Найдите отрицательную частицу (с меткой зависимости neg)

  2. Посмотрите, что это за его родительская зависимость. Если это именно тот глагол, который вы ищете, верните true.

  3. Если нет, перечислите потомков глагола и посмотрите, находится ли искомый глагол в поддереве (т.е. , имеет правильную лемму и помечен как VERB). Однако вы можете ограничить поиск некоторой глубиной поддерева, чтобы игнорировать странные случаи со слишком сложными фразами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...