Приложения NLP

Здравствуйте и вновь добро пожаловать на занятия по теме «Обработка данных: обработка естественных языков на языке Python».

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

Во многих лекциях этого курса убрана теория; вместо этого мы обсудим, каким образом можно создать собственные решения данных задач, используя уже существующие библиотеки. Вначале мы познакомимся с несколькими задачами, которые на данное время решаются очень хорошо. Затем мы рассмотрим задачи, которые сейчас решаются весьма неплохо, но отнюдь не идеально. И наконец мы рассмотрим проблемы, по которым есть любопытные работы, но которые определённо ещё нуждаются в совершенствовании.

Вот некоторые задачи, которые мы в данное время уже научились решать очень хорошо:

  • Обнаружение спама. Я, к примеру, почти больше не получаю спам на электронную почту, а в Gmail даже есть алгоритмы, способные распределять данные по разным вкладкам, – скажем, сообщения социальных сетей отправляются во вкладку «Соцсети», а рекламные электронные письма – во вкладку «Реклама».
  • Следующее – определение частей речи. Если необходимо определить, к какой части речи принадлежат слова из предложения – прилагательное, наречие, имя существительное, глагол и т. д. – то мы можем очень хорошо их классифицировать.
  • Вот пример определителя частей речи, находящегося по адресу. Я нажимаю кнопку «POS-tag!», и определитель показывает, к какой части речи принадлежит каждое слово.
  • И последнее – распознавание именованных сущностей. Это как распознавание частей предложения, но только по отношению к людям, организациям, датам и т. п.

Возьмём, к примеру, определитель именованных сущностей Стэнфордского университета. Напечатаем предложение «Стив Джобс был главным исполнительным директором корпорации Apple». Определитель сообщил, что Стив Джобс – это человек, но не смог распознать, что Apple является организацией. Попробуем фразу «Стив Джобс жил в Калифорнии». Программа определила Калифорнию как географический объект. Попробуем ещё «Корпорация Apple находится в Калифорнии». На этот раз программа смогла распознать, что Apple является корпорацией.

Перейдём теперь к задачам, которые решаются довольно неплохо, но не идеально.

Анализ тональности текста. Это то, на чём мы остановимся подробнее в этом курсе чуть позже. Предположим, вы просматриваете на сайте отзывы об отеле и желаете узнать, считают ли люди этот отель в целом хорошим или плохим. Конечно, вы можете это сделать, лично перечитав все отзывы. Но можно и поручить машине определить положительную или отрицательную оценку, хотя это не так-то просто.

Далее идёт машинный перевод, такой как, например, переводчик Google. Приведём пример использования переводчика Google, к примеру, переведём на идиш предложение «Давай пойдём на пляж». Затем перевод предложения на идиш вновь переведём на монгольский язык, а перевод с монгольского – снова на английский. В результате получим «Из нас идут на пляж». Таким образом, как вы можете убедиться, машинный перевод не является совершенно точным.

Ещё одна вещь, с которой получается довольно неплохо справляться, – извлечение информации. Это та самая штука, с помощью которой iOS может автоматически добавлять события в ваше расписание путём чтения ваших электронных писем и текстовых сообщений.

И несколько задач, которые мы стараемся решить, но далеки от совершенства:

  • Во-первых, машинное общение. Существуют приложения как Cortana, с помощью которых вы можете, сказав простенькую фразу, приказать компьютеру выполнить действие. На самом деле это очень сложная задача, поскольку тут присутствует дополнительный этап – кроме обработки текста, компьютер должен ещё и перевести ваш голос в набор слов. Приведём по этому поводу любимый пример Джеффри Хинтона: на английском языке фраза «распознавание речи» (recognise speech) звучит почти так же, как «крушение приятного пляжа» (wreck a nice beach). Правда, используя вероятностный анализ, в данном случае мы всё же можем прийти к выводу, что фраза «распознавание речи» более предпочтительна. В целом же компьютеру ещё сложнее уяснить смысл ваших слов и выдать в ответ что-то осмысленное.

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

  • Ещё одна проблема – перефразирование и обобщение. Представьте себе, что вы работаете в новостной компании и каждый день люди пишут всё новые статьи для вашего сайта. Конечно, вам хотелось бы иметь в распоряжении коллекцию соответствующих картинок, а также небольшой ознакомительный текст, который представлял бы статью. Как несколькими предложениями корректно передать суть статьи? Даже если вы будете пользоваться сервисом Pinterest, вы обнаружите, что он довольно часто ошибается.

Аналогичная проблема возникает в случае, если вы хотите найти два разных предложения, по сути передающих одно и то же. Существует множество вариантов этой проблемы. Недавно удалось достичь любопытного прогресса в этой сфере благодаря использованию нейронных сетей. Так, существует система Word2vec, способная преобразовывать слова в векторы. Она показывает, что мы можем извлечь суть идей и взаимосвязей из языка и представить их в векторном пространстве. Это исключительно полезно, так как мы можем производить математические операции над векторами.

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

Надеюсь, я дал вам представление о широком спектре практических и очень полезных приложений, в которых применяется NLP. Продолжим обучение на следующих лекциях!

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

 

Понравилась статья? Поделить с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: