NLP (Neuro-Linguistic Processing или Natural Language Processing) — это нейро-лингвистическая обработка или обработка естественного языка. Любого человека спроси, что такое NLP, и он ответит, что это что-то, связанное с психологией. И он будет прав, так как этот термин получил распространение именно в психологии.
Однако у NLP есть 2 сущности:
-
Neuro-Linguistic Processing — принадлежит области психологии.
-
Natural Language Processing — принадлежит области программирования.
Это не совсем одно и то же, но при этом очень близкие по смыслу понятия, которые работают в разных сферах. О психологическом NLP мы сегодня говорить не будем, потому что это не наша сфера деятельности, а вот об NLP в программировании мы сегодня обязательно поговорим. Важно разделять и не путать эти два пояснения к одному термину.
NLP в программировании — что это такое
NLP в программировании очень тесно связано с машинным обучением. Его основной задачей является поиск «общего языка» между живым человеком и неживым «железом» для решения различных задач, таких как:
-
улучшение бизнес-показателей при помощи искусственного интеллекта;
-
составление прогнозов и разработка математических моделей в различных сферах;
-
улучшение распознавания текста, речи и изображений;
-
улучшение взаимодействия голосовых помощников с владельцами устройств;
-
и мн. др.
Есть даже такая узкая специализация, как NLP-разработчик, которая является частью такой профессии, как Data Science. NLP-разработка пока не является отдельным направлением в программировании, но обязательно им станет в обозримом будущем, потому что NLP в программировании развивается очень быстрыми темпами.
NLP — это работа с большими данными, как и Data Science, однако DS работает с различными видами данных из разных сфер, а NLP работает в основном с текстом и семантикой.
NLP на практике
В практическом применении NLP-разработка в основном занимается работой с текстовыми данными для лучшего их понимания искусственным интеллектом. Вот несколько задач, которые выполняет NLP в программировании:
-
Самая основная задача NLP — это перевод текстов с одних языков на другие силами искусственного интеллекта. На сегодняшний день перевод высокого качества недоступен, поэтому тут для NLP есть поле для деятельности.
-
Проведение классификации текстов по заданным параметрам. Это может быть классификация по принципу «спам или не спам» либо классификация по рубрикам новостей: спорт, политика, финансы, медицина и т. д., либо классификация текстов по эмоциям: положительные, отрицательные или нейтральные, и другие классификации.
-
Идентификация сущности. К примеру, в каком-либо заданном тексте искусственный интеллект должен определить по смыслу, кто есть кто: где описывается живой человек, где — животное, где — организация, где — устройство и т. д. При этом разные сущности могут находиться в одном тексте, а ИИ должен уметь их правильно определить. Например, в тексте: «Интернет-магазин «Амазон» продает iPhone. Создатель магазина — Джефф Безос» искусственный интеллект должен определить, что «Амазон» — это веб-ресурс, «iPhone» — это устройство, а «Джефф Безос» — это реальный человек.
-
Отношения и взаимосвязи сущности. Эта задача вытекает из предыдущей. Например, в нашем тексте искусственный интеллект должен определить, что «Джефф Безос» является создателем интернет-магазина «Амазон», а значит, имеет с ним тесную связь, при этом не имеет тесной связи с устройством «iPhone».
-
Качественная работа голосовых помощников. То есть, задавая какой-либо вопрос голосовому помощнику, мы ожидаем 100%-е понимание, что не всегда происходит. Но как раз этим и занимается NLP — делает так, чтобы роботы-помощники лучше понимали людей.
Почему NLP в разработке выделяют в отдельное направление
Пока NLP не выделяют в отдельное направление, но все к этому идет. В первую очередь это обуславливается сложностью процесса обучения «машин» взаимодействовать с текстом.
Для людей текст кажется естественным и понятным, а описанные выше задачи — достаточно простыми. Однако, когда дело доходит до обучения машин в плане взаимодействия с текстами, возникают очень трудные задачи, которые требуют немало усилий для их преодоления. Например:
-
Полисемия — это многозначные слова, которые имеют одинаковый исходный смысл. Например: стол (какое-то учреждение или предмет), крыса (животное или человек), молоток (предмет или человек), остановка (процесс или объект) и т. д.
-
Омонимия — одинаковые слова, но с разными смыслами. Например: замок, печь, ключ и т. д.
-
Анафора местоимений. Например, у нас есть текст: «Грузчик грузил в прицеп песок, он сильно вспотел». Слово «он» может относиться и к грузчику, и к песку, и к прицепу. Человек легко понимает, к чему относится местоимение «он», но искусственному интеллекту это нужно объяснить, а это очень непросто.
-
Эллипсис. Например, у нас есть текст: «Иван несет синюю коробку, а Мария — красную». Люди прекрасно понимают, что «красную» обозначает «красную коробку», но, чтобы это понял искусственный интеллект, нужно проделать просто огромную работу в рамках всего лишь одного примера.
Подобных языковых трудностей в каждом языке пруд пруди — от этого и возникает сложность во взаимодействии с текстовой информацией.
Заключение
NLP в программировании — это возможность улучшить понимание между компьютером и человеком. Это поле деятельности, которое пока не показывает своих границ. В целом, в программировании, а конкретнее, в машинном обучении NLP только зарождается как отдельная ветвь, которой сулят неплохое будущее. Квалифицированный NLP-разработчик сейчас на вес золота, а точнее, их практически нет, при этом спрос на таких узких специалистов только растет. Возможно, сейчас самое время, чтобы глубже изучить NLP в разработке и стать высокооплачиваемым специалистом.