Оптимизированный поиск с использованием поиска и поиска

У меня есть проблема, которую нужно решить, которая кажется мне довольно сложной, но я не могу найти, как подойти к этой проблеме. Я попробовал поискать в Google, но не нашел какого-то конкретного направления для продолжения.

Я ищу некоторые указатели, идеи, соответствующие материалы, названия некоторых алгоритмов и т. Д.

проблема

Составьте список названий книг. Например, с текстом "Если позволите, я буду смеяться и жить, как принц Шарм". Возможный список книг будет

  • Если бы я мог
  • Я буду смеяться сегодня вечером
  • Смейся и живи в Тимбакто
  • Как принц Шарм

Желательно иметь короткий список, подобный приведенному выше, а не длинный список, подобный.

  • Если я умру
  • Я могу умереть сегодня вечером
  • Я буду рождена свыше
  • Смеяться и плакать
  • Живи как король
  • Принц Елена в беде
  • Очарование жизни на горе
  • ...

Что доступно

Доступен API для библиотеки, который предоставляет сервис поиска и поиска. Поиск выполняет конкретные поиски по названию книги, где в качестве поиска приводится список книг по заданному ключевому слову (ам).

Некоторые дополнительные ограничения

  • Что мы можем сделать, чтобы сделать результат максимально коротким? Можем ли мы найти оптимальное решение?
  • Как мы можем минимизировать непревзойденные слова?
  • Как мы можем использовать локальное обналичивание для улучшения поиска частых предложений?

Спасибо

1 ответ

Наивным решением может быть следующее:

Для каждого слова в вашем поиске найдите все подходящие названия книг.

Затем для каждого кандидата вычислите показатель корреляции между токенизированным названием книги и всеми словами в вашем поиске.

Базовая корреляционная функция может быть что-то вроде:

public double correlation(String[] a, String[] b, int offset)
{
  double ret = 0.;
  int maxI = Math.min(a.length, b.length - offset);
  for(int i = 0 ; i < maxI ; i++)
  {
    ret += a[i].equals(b[i+offset]) / maxI;
  }
}

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

Затем вы можете отсортировать названия книг с этим счетом.

ура

Другие вопросы по тегам