семантический поисковик и навигатор

Привет, я прошел короткий курс искусственного интеллекта, и мы разработали чат-бота на основе AIML и python. У меня есть новая задача разработать какую-то форму семантической поисковой системы. Я хочу, чтобы люди могли перемещаться по данным или искать вопросы, а я даю им результаты. Первоначально это будет для конкретной темы, например. транспорт и география. Некоторые примеры ввода от пользователя:

  1. Сколько мне будет стоить добраться от x до y?

    Ответ: Вам это будет стоить 26 $.

  2. Как далеко x от z?

    Ответ: Это 25 миль.

  3. Пользователь может добавить факультативные маршруты, чтобы они могли просто ввести «Добавить в избранное», и затем пользователю будет предложено ввести маршруты f.

    Ответ: Вы просите добавить запись к любимым маршрутам?

    Пользователь: да.

    Ответ: Пожалуйста, введите любимый маршрут.

  4. Покажи мои общие маршруты.

    Ответ: Ваши общие маршруты - это x, y и z.

Таким образом, данные, в которых выполняется поиск, могут быть специфичными для пользователя, поэтому, возможно, придется использовать базу данных. Некоторые данные являются внешними, возможно, вызовите карты Google, чтобы узнать о расстояниях. На некоторые вопросы может просто потребоваться ответ от чат-бота.

Итак, что мне делать после ввода пользователем? Токенизировать, пресекать, разбирать?

Я надеялся где-нибудь использовать AIML, но прочитал статью http://knytetrypper.proboards.com/index.cgi?board=gbot&action=print&thread=285. Говорит, что AIML хорош только для сопоставления с образцом. Кто-нибудь, пожалуйста, укажите мне правильное направление. Я загрузил NLTK, он кажется полезным, но я не знаю, может ли он сам по себе делать то, что мне нужно.

Есть какие-нибудь похожие статьи по проектам?


person sqwale    schedule 31.05.2012    source источник


Ответы (1)


Это действительно сложная проблема. Однако, если вы ограничите ввод очень маленьким пространством, это выполнимо. На этом этапе вы просто используете словарь и имеете базовые команды для каждого возможного запроса.

Есть несколько способов различать типы запросов: 1) проанализировать и попытаться использовать всю эту информацию 2) частичный синтаксический анализ / тег pos - найти глаголы 3) подход машинного обучения / классификации, используя pos как функцию, расстояния, слова / конструкции, такие как 'к' / 'от'

... а затем вы можете попытаться вытащить параметры запроса после того, как правильно классифицировали запрос.

Я бы не стал проводить синтаксический анализ, пока вы не будете точно уверены, что это за запрос. Классификационный подход - лучший первый шаг, а для того, чтобы возиться с этим, NLTK очень полезен.

person nflacco    schedule 31.05.2012
comment
Большое спасибо за ответ. Поэтому сначала я попробую провести классификацию по таким словам, как «до / от», «стоимость», «расстояние». Однако я понимаю, что это просто как бы даст мне тему о том, о чем был вопрос, но не совсем то, что было задано, поэтому я думаю, что вы упомянули, что я должен попытаться разобрать его после. Так в основном классификация сокращает пространство поиска до более изысканного? - person sqwale; 05.06.2012