Я ищу алгоритм, но я не знаю названия проблемы, поэтому ничего не могу найти. Надеюсь, мое объяснение проблемы имеет смысл!Эффективно найти список ближайших совпадений для списка слов и фраз
Предположим, у вас длинный список фраз, где каждая фраза представляет собой набор слов. Пользователь вводит список слов, а их список «соответствует» фразе, каждое слово в фразе находится в их списке. «Счет» списка - это количество фраз, которые оно соответствует. Цель состоит в том, чтобы предоставить пользователю список слов, которые лучше всего улучшат оценку их списка.
Вот простой пример. У нас есть десять фраз:
- древесина кабина
- кемпинг в лесе
- кемпингов кабина
- весело кемпинг
- костер
- кемпинг огнь
- плавания отверстие
- весело кабина
- древесный огонь
- камин
И пользователь предоставляет этот список:
- древесины
- весело
- кемпинги
Мы сопрягать фразы 1 и 4, так что оценка является 2. Но если пользователь добавит «каюту» в свой список, они будут соответствовать еще 3 фразам и получить оценку 5. «огонь» добавит 2 к счет.
С тривиально коротким списком нет сложной проблемы, так как вы можете просто перебирать варианты практически без перерывов. Но, поскольку список растет до сотен тысяч, он начинает принимать сотни миллисекунд. Похоже, что должен быть способ создать индекс, чтобы ускорить процесс, но я не могу думать о структуре индекса.
Любой, кто нашел время, чтобы прочитать все это, спасибо! Надеюсь, кто-то знает, о чем я говорю.
Когда в списке всего 3 элемента, почему вы используете только фразы 1 и 4? Что считается «совпадением»? – lyang