Я пытаюсь создать систему, которая идентифицирует различные команды и входные данные на основе письменного текста, введенного человеком. Я начну с примера, чтобы было понятнее. Предположим, пользователь вводит следующий текст:
Меня имя Джон Доу, мой возраст 28 лет, мой адрес Баркли-стрит, тел. 7 Гавана. Мне нравится шоколадный торт с клубникой и ванилью.
Основываясь на наборе предопределенных маркеров (например, «имя», «возраст», «адрес», «мне нравится»), я хотел бы определить их соответствующее значение (например, «Джон Доу ", "28", "Баркли-стрит... Гавана", "Шоколадный торт... ванильный").
Моя текущая попытка состояла в том, чтобы решить эту проблему с помощью некоторых шаблонов регулярных выражений: для каждого маркера я построил регулярное выражение, говорящее что-то вроде «если вы найдете маркер X, возьмите весь текст между ним и любым из маркеров X, Y, Z, которые вы могли бы найти". Это было извлечение текста между маркерами, но построение всего на основе регулярных выражений будет очень громоздким, особенно если я начну учитывать гибкость и небольшие вариации.
У меня нет большого опыта работы с НЛП, поэтому я не совсем уверен, с чего мне начать для правильного решения. Каковы некоторые подходящие подходы/решения/библиотеки для решения этой проблемы?
Sub ParseJson()
. Вы заменяете некоторые последовательности элементарных символов и словосочетания токенами, затем заменяете некоторые комбинации токенов другим одиночным токеном, повторяете в цикле, пока не получите токен верхнего уровня, что означает успешное распознавание. Затем извлеките необходимые данные на основе вложенности и структуры токенов. - person omegastripes   schedule 09.09.2016