NLTK. Найти, если предложение в форме допроса

Я пытаюсь определить, является ли предложение вопросом или утверждением. Помимо поиска вопросительного знака в конце предложения, есть ли другой способ обнаружить это? Я обрабатываю посты в Твиттере, и люди не обязательно следуют хорошим правилам, таким как вопросительные знаки в Твиттере.

Ссылка на другие библиотеки также хорошо для меня, если nltk теперь работает.

2 ответа

Решение

Один из простых способов сделать это - проанализировать предложение и найти присвоенный ему тег. Например, разбор предложения "Есть ли способ сделать это?" со стэнфордского парсера вернемся:

(ROOT
  (SQ (VBZ Is)
    (NP (EX there))
    (NP
      (NP (DT any) (JJ other) (NN way))
      (S
        (VP (TO to)
          (VP (VB do)
            (NP (DT this))))))
    (. ?)))

где SQ обозначает "перевернутый вопрос" да / нет ", или основное предложение вопроса wh после фразы wh в SBARQ". Другой пример:

(ROOT
  (SBARQ
    (WHNP (WP What))
    (SQ (VBZ is)
      (NP
        (NP (DT the) (NN capital))
        (PP (IN of)
          (NP (NNP Scotland)))))
    (. ?)))

где SBARQ обозначает "Прямой вопрос, введенный wh-словом или wh-фразой". Довольно просто вызвать внешний анализатор из Python и обработать его вывод, например, проверить этот интерфейс Python для инструментов Stanford NLP.

Вы можете проверить возможные ключевые слова вопроса и сравнить примеры списков вопросов с вводом, который вы хотите проверить.

Sample_Questions = ["what is the weather like","where are we today","why did you do that","where is the dog","when are we going to leave","why do you hate me","what is the Answer to question 8",
                    "what is a dinosour","what do i do in an hour","why do we have to leave at 6.00", "When is the apointment","where did you go","why did you do that","how did he win","why won’t you help me",
                    "when did he find you","how do you get it","who does all the shipping","where do you buy stuff","why don’t you just find it in the target","why don't you buy stuff at target","where did you say it was",
                    "when did he grab the phone","what happened at seven am","did you take my phone","do you like me","do you know what happened yesterday","did it break when it dropped","does it hurt everyday",
                    "does the car break down often","can you drive me home","where did you find me"
                    "can it fly from here to target","could you find it for me"]


 def Question_Sentence_Match():
                for Ran_Question in Sample_Questions:
                    Question_Matcher = SequenceMatcher(None, Ran_Question, what_person_said_l).ratio()
                    if Question_Matcher > 0.5:
                        print (Question_Matcher)
                        print ("Similar to Question: "+Ran_Question)
                        print ("likely a Question")
                        return True
Другие вопросы по тегам