Скрипт, чтобы найти, если подобный вопрос существует - PullRequest
0 голосов
/ 03 февраля 2010

G'day,

Я создаю систему часто задаваемых вопросов, и пользователь должен видеть, задавался ли аналогичный вопрос. Просто интересно, знает ли кто-нибудь сценарии (желательно php или javascript или, возможно, actioncript), которые имеют какой-то ИИ, который будет это делать? Я заметил, что в stackoverflow введен вопрос, связанные вопросы приведены ниже.

Любой совет будет оценен.

Спасибо вам.

Ответы [ 2 ]

2 голосов
/ 03 февраля 2010

На этот вопрос нелегко ответить, не зная, как выглядит ваша база данных (если она у вас есть) или как работает ваш сайт.

Вы можете основывать сходство на многих вещах:

  1. Поделиться общей категорией
  2. Поделиться общими тегами
  3. Поделитесь общими ключевыми словами в своем теле.
    Эти ключевые слова часто определяются после того, как общие слова ('и', 'is', 'the', 'it' и т. Д.) Извлекаются из строки, оставляя необычные слова ('C #', 'database ',' Вопросы '), чтобы выполнить поиск с.
  4. Пользователи явно объявили их похожими
  5. и т.д ...

Это все типы предметов, которые следует учитывать при определении сходства. Надеюсь, это поможет! В будущем вернитесь с более конкретными вопросами, чтобы получить более конкретные ответы.

1 голос
/ 03 февраля 2010

Я думаю, что лучшее, на что вы можете надеяться, - это простая поисковая система: разбейте вопрос на слова и запишите слова против вопроса в rdbms, например:

Таблица вопросов (id, текст, ....)

Табличные слова (вопрос_ид, слово)

Затем, чтобы получить вопросы, похожие на новый вопрос с идентификатором $ x:

SELECT prev.id, prev.text, count(*) AS common_words
FROM questions prev, words prev_words, words curr_words
WHERE curr_words.question_id=$x 
AND curr_words.word=prev_words.word
AND prev_words.question_id=prev.id
GROUP BY id, text
ORDER BY COUNT(*) DESC
LIMIT.....?

Вы, конечно, можете применить более сложные методы сравнения к возвращенному шорт-листу, но это, безусловно, должен быть первый шаг.

С

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...