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 в разработке и стать высокооплачиваемым специалистом.
Другое