Логический и не-логический поиск


У меня возникли некоторые проблемы, пытаясь понять, что такое нелогический поиск (если это имеет смысл). Насколько я понял, логический поиск позволяет использовать и, или и не в запросе. Но как насчет нелоевого поиска? Я где-то читал, что это означает, что вы можете искать подстроки, а не только полные слова, но я хотел убедиться, что полностью понимаю, что означает каждый из них. Кроме того, может быть, пример поможет, например, является ли Google boolean или non-boolean? Как насчет текста Oracle или Apahe Гумз?

1 2

1 ответ:

Не булев поиск включает в себя подходы, которые не являются чисто булевскими методами модели.1.

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

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

Общей мерой подобия являетсяКосинус-подобие .
Эта модель хорошо сочетается с модельюtf-idf (td-idf определяет значение в каждой записи каждого вектора).

Обратите внимание, что это не булева модель. Вы не опорируете на "множествах", вы сравниваете сходство векторов-это совсем другое модель. Кроме того, этот метод имеет важное преимущество - он возвращает оценку, связанную с каждым документом, а не только логический ответ "релевантно" или "не релевантно". Векторное пространство As-is не допускает и, или опораций, однако это легко решается путем выполнения 2-фазного поиска. Первый использует булеву модель для получения кандидатов, а второй-векторное пространство для получения оценки для каждого документа.

Другие модели строят язык модель вне документа-языковая модель описывается как P(word|M) = the probability of the model M to generate the word.

Общей языковой моделью является P(word|document) = #occurances(word,document)/|document|
чтобы избежать нулевой вероятности-мы обычно добавляем метод сглаживания. распространенный прием:

P(word|document) =  alpha*#occurances(word,document)/|document| + (1-alpha)*#occurances(word,corpus)/|corpus|

Теперь-когда у нас есть запрос из более чем одного термина: q=t1 t2 ... tn, мы вычисляем:

P(q|d) = P(t1|d)*P(t2|d)*...*P(tn|d)
Обратите внимание, что эта модель фактически допускает и семантику, задавая alpha=1, и или семантику по alpha!=1.

(1) Логический поиск в основном задан терминология:

Каждый термин связан с набором, содержащим все документы, в которых этот термин присутствует. Теперь вы просто устанавливаете опоры на кучу наборов. И есть пересечение, или есть союз.