Я создаю приложение, способное ранжировать в режиме онлайн документы по ранее заданному запросу.Для простоты давайте рассмотрим, у меня уже есть все документы для данного запроса.
После выполнения шагов предварительной обработки, таких как токенизация и извлечение именованных объектов, каждый документ (включая запрос) представляет собой массив токенов.
Чтобы использовать TfIdfVectorizer
, я преобразовываю каждый документ в строку, просто чтобы прояснить:
# corpus include the query and doc is an array of tokens
vectorizer_input = [' '.join(doc) for doc in corpus]
Затем, для расчета самого ранжирования, я вычисляю некоторые метрики, такие как косинусСходство для запроса и всеобщая норма.Я мог бы добавить больше метрик в будущем, но пока это все.
Итак, как я могу воспользоваться инвертированным индексом ?Я понимаю, что использование позиционно-инвертированного индекса может принести пользу для вычисления метрик, которые зависят от расстояния между терминами.Кроме того, TfIdfVectorizer
уже делает большую часть того, что делал бы инвертированный индекс.
Я что-то упустил?Есть ли преимущество в использовании инвертированного индекса над TfidfVectorizer
?