Алекса, какой сегодня прогноз погоды?

Вы когда-нибудь задумывались, как Alexa, Siri или Google Assistant понимают, что вы говорите? Умные помощники были интегрированы в любой электронный продукт, о котором вы только можете подумать, от умных динамиков до микроволновых печей, и мы начали воспринимать их как должное.

За этими помощниками стоят некоторые сложные технологии, но основная предпосылка такова:

  1. Преобразование речи в текст
  2. Обработать текст для понимания
  3. Вычислить и вернуть соответствующий ответ

В этом посте я сосредоточусь на пункте номер 2 и на том, как обработка естественного языка (NLP) лежит в основе умных помощников.

Что такое НЛП?

Обработка естественного языка — это концепция анализа естественного языка, будь то текст или речь, и придание ему некоторого значения, особенно для облегчения взаимодействия человека и компьютера.

Так что же все это значит?

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

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

Команда из Стэнфорда создала приложение с открытым исходным кодом, которое берет на себя всю тяжелую работу по разбору текста, чтобы разработчикам не приходилось изобретать велосипед.

Как работает НЛП?

Я собираюсь основывать все свои примеры на приложении Stanford CoreNLP. Это не только потому, что я знаком с ним, но и потому, что он действительно прост в использовании!

Чтобы дать вам визуальное представление о том, как это работает, я взял следующее изображение со страницы Stanford Core NLP.

Это показывает, как работает часть приложения для распознавания именованных объектов. Когда вы спрашиваете своего помощника, какая погода в Париже, он должен разбить это предложение и пометить каждое слово.

В приведенном выше примере приложение Core NLP пометит слово «Мария» как «Человек», а слово «Париж» — как «Местоположение».

Давайте рассмотрим пример с погодой.

Алекса, какой прогноз погоды в Париже?

  • Что → Что такое → Местоимение
  • Определитель
  • Погода → Существительное
  • Прогноз → Существительное
  • В → Предлог
  • Париж → Имя собственное → Местоположение

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

Из этого мы теперь можем уловить базовое понимание того, как слова связаны друг с другом. Для нашего вопроса о погоде мы получили бы следующее.

root(ROOT-0, what-1)
cop(what-1, 's-2)
det(forecast-5, the-3)
compound(forecast-5, weather-4)
nsubj(what-1, forecast-5)
case(Paris-7, in-6)
nmod(forecast-5, Paris-7)

compound(forecast-5, weather-4) показывает, что слова погода и прогноз вместе — это то, что нас интересует. nsubj показывает, что прогноз является темой, а что мы хотим знать. case говорит нам, что нас волнует этот вопрос в контексте в Париже. Со всем этим вместе Алекса теперь может уйти и рассчитать лучший ответ для прогноза погоды, но конкретно для места Париж.

Сложные вещи подходят только для основного повседневного вопроса? Человеческий язык сложен, и я не собираюсь притворяться, что сам все это понимаю. Хорошая новость в том, что вам это не нужно.

Если вы заинтересованы в том, чтобы встроить НЛП в свое собственное приложение, вы можете сами начать работу со Stanford Core NLP.

Как видите, НЛП сложно, но использование такого приложения, как Core NLP, упрощает его. Вы можете воспользоваться всеми преимуществами НЛП, не внедряя собственный сложный парсер.

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

Я использовал это для получения контекстной информации из документов, извлеченных из Интернета, но есть много других вариантов использования и функций, которые стоит попробовать, так почему бы не попробовать!