Логический и не-логический поиск
У меня возникли некоторые проблемы, пытаясь понять, что такое нелогический поиск (если это имеет смысл). Насколько я понял, логический поиск позволяет использовать и, или и не в запросе. Но как насчет нелоевого поиска? Я где-то читал, что это означает, что вы можете искать подстроки, а не только полные слова, но я хотел убедиться, что полностью понимаю, что означает каждый из них. Кроме того, может быть, пример поможет, например, является ли Google boolean или non-boolean? Как насчет текста Oracle или Apahe Гумз?
1 ответ:
Не булев поиск включает в себя подходы, которые не являются чисто булевскими методами модели.1.
Вероятно, наиболее распространенным примером такого метода является векторно-пространственная модель.
в этой модели каждый документ представляет собой вектор, представленный словами (или Би-граммами,...) он содержит. Размерность каждого документа - это количество терминов в словаре.Сходство в этой модели достигается путем создания "поддельного" документа-запроса, и сравнение этого поддельного документа с любым другим документом в корпусе. Чем больше документ похож на запрос-тем лучше результат.
Общей мерой подобия являетсяКосинус-подобие .
Обратите внимание, что это не булева модель. Вы не опорируете на "множествах", вы сравниваете сходство векторов-это совсем другое модель. Кроме того, этот метод имеет важное преимущество - он возвращает оценку, связанную с каждым документом, а не только логический ответ "релевантно" или "не релевантно". Векторное пространство As-is не допускает и, или опораций, однако это легко решается путем выполнения 2-фазного поиска. Первый использует булеву модель для получения кандидатов, а второй-векторное пространство для получения оценки для каждого документа.
Эта модель хорошо сочетается с модельюtf-idf (td-idf определяет значение в каждой записи каждого вектора).
Другие модели строят язык модель вне документа-языковая модель описывается как
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) Логический поиск в основном задан терминология:
Каждый термин связан с набором, содержащим все документы, в которых этот термин присутствует. Теперь вы просто устанавливаете опоры на кучу наборов. И есть пересечение, или есть союз.