Я пытаюсь создать систему, которая идентифицирует различные команды и входы на основе написанного человеком текста. Я начну с примера, чтобы сделать вещи чище. Предположим, что пользователь вводит следующий текст:Идентифицировать ключевые слова и команды в натуральном тексте
Мой зовутJohn Doe, мой возраст лет, мой адресBarkley Street нет. 7 Гавана. Мне нравитсяшоколадный торт с клубникой и ванилью.
на основе набора предопределенных маркеров (например, «имя», «возраст», «адрес», «Мне нравится»), я хотел бы, чтобы обнаружить их соответствующие значение (например, «Джон Doe "," 28 "," Barkley Street ... Havana "," шоколадный торт ... ваниль ").
Моя текущая попытка состояла в том, чтобы решить это с помощью некоторых шаблонов регулярных выражений: для каждого маркера я построил регулярное выражение, говорящее что-то вроде строк «если вы найдете маркер X, возьмите весь текст между ним и любым из X, Y, Z, которые вы можете найти ". Это извлечение текста между маркерами, но построение всего, что основано на регулярных выражениях, будет очень громоздким, особенно если я начну принимать сгибание и небольшие вариации.
У меня нет большого опыта работы с НЛП, поэтому я не уверен, где я должен начать для правильного решения. Каковы некоторые подходящие подходы/решения/библиотеки для решения этой проблемы?
Хотя я, возможно, не очень хорошо знаю НЛП, могу сказать вам это со 100% уверенностью: регулярные выражения *** НЕ *** достаточно мощные, чтобы сделать надежную интерпретацию текста. Естественные языки чрезвычайно сложны и часто противоречивы, а еще более мощные конструкции, чем регулярные выражения (например, [контекстно-свободные грамматики] (https://en.wikipedia.org/wiki/Context-free_grammar)) недостаточны для обработки текстов на естественном языке , –
Вы можете попытаться разбить строку на основе маркеров. http://www.regexformat.com/version_files/Rx5_ScrnSht01.jpg – sln
Затем вы можете разделить результаты на основе разных маркеров, пока не сможете сформулировать. Recap: Разделить на первичные маркеры, затем разделить на вторичные маркеры (которые могут быть подмножеством основного). – sln