struct Text {
words: Vec<String>,
...
}
struct Input {
words: Vec<String>,
...
}
У меня есть приложение для обработки текста с несколькими шагами.
Во время одного из этапов я запускаю JaroWinkler между каждым словом текста и вводом, выбираю слова Text
с наилучшим соответствием дляВведите и получите среднее их баллов. Я использую это среднее значение при расчете конечного результата. Это наивный подход.
Теперь список Text
объектов превышает 120 тыс., И есть много повторяющихся слов (300 тыс. Против 60 тыс. Уникальных).
Теперь я трачумного времени на этом этапе. Одна вещь, которую можно сделать здесь, чтобы сократить время, может заключаться в том, чтобы найти JaroWinkler между уникальными словами и всеми входными словами по отдельности, а затем использовать это на шаге. Но это плохо с точки зрения памяти. Что если ввод содержит 1000 слов? Мне придется хранить 1000 х 60 К значений в памяти. Сейчас я ничего не держу в памяти, а плачу в терминах процессора.
Есть ли более эффективный способ сделать это?