Подтвердить что ты не робот

Как узнать, является ли предложение вопросом (вопросительным)?

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

4b9b3361

Ответ 1

В синтаксическом анализе вопроса правильная структура будет иметь вид:

(SBARQ (WH+ (W+) ...)
       (SQ ...*
           (V+) ...*)
       (?))

Таким образом, используя любой доступный синтаксический синтаксический анализатор, дерево с SBARQ node, имеющее встроенный SQ (необязательно), будет индикатором, представляющим собой вопрос. WH + node (WHNP/WHADVP/WHADJP) содержит вопросник (кто/что/когда/где/почему/как), а SQ содержит инвертированную фразу.

i.e.:

(SBARQ 
  (WHNP 
    (WP What)) 
  (SQ 
    (VBZ is) 
    (NP 
      (DT the) 
      (NN question)))
  (. ?))

Конечно, наличие большого количества предшествующих статей приведет к ошибкам в синтаксическом анализе (которые могут быть обработаны), так как это будет очень плохо написанные вопросы. Например, название этого сообщения "Как узнать, является ли предложение вопросом?" будет иметь SBARQ, но не SQ.

Ответ 2

В грамматической форме утверждения задаются многие квази-вопросы/запросы-для-информации; например "Я хотел бы узнать, кто украл мой велосипед".

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

     User: I would like to know how many angels fit on the head of a pin. 
     System: Do you have a question about angels?
     User: Yes.          
     System: Do you want to know if angels are fit?
     User: No.
     System: Do you want to know if angels have heads?
     User: Possibly.         
     System: Do you want to know if angels have pins?
     User: No.         
     System: Do you want to know if angels are numerous?
     User: No.
     System: Do you want to know the dimensions of an angel?
     User: Yes.
     System: Do you mean angels in paintings?
     User: No.
     System: Do you mean angels in myth and religious writing?
     User: Yes.
     System: Angels are metaphysical beings.


     User: I hear that Pennsylvania was founded by William Penn. Is that true?
     System: Do you have a question about hearing?
     User: No.
     System: Do you have a question about Pennsylvania?
     User: Yes.         
     System: Pennsylvania was founded by William Penn.
     User: When?         
     System: 1682.
     User: What does the name mean?
     System: What name?
     User: Pennsylvania!
     System: Do you want to know the meaning of Pennsylvania?
     User: Yes.
     System: Pennsylvania means Penn Woods.

Ответ 3

Взгляните на Link Grammar Parser Это многоязычный парсер, основанный на концепции пар ссылок связанных слов в предложении. Он написан на C, но также имеет интерфейс Java JNI.