struct Text {
words: Vec<String>,
...
}
struct Input {
words: Vec<String>,
...
}
我有一个包含多个步骤的文本处理应用程序。
在其中一个步骤中,我在文本的每个单词和输入之间运行 JaroWinkler,选择与输入最匹配的Text
单词并获得它们的平均分数。我使用这个平均值来计算最终结果。这是一种天真的方法。
现在,Text
对象列表超过 120k,并且有很多重复的单词(全部 300k 对 60k 唯一)。
现在我在这一步上花了很多时间。可以在这里做的一件事来缩短时间可能是在唯一词和所有输入词之间分别找到 JaroWinkler,然后在步骤中使用它。但这在记忆方面很糟糕。如果输入有 1000 个单词怎么办?我必须在内存中保留 1000 x 60k 的值。现在我没有在内存中保存任何东西,而是在 CPU 方面付费。
有没有更有效的方法来做到这一点?