python - 如何有效地计算大量数据的距离矩阵
问题描述
我有一个问题,我试图使用 Edit/Levenshtein 距离计算最近的字符串。
我有一个包含大约 250,000 个唯一字符串的列表,对于列表中的每个项目,我需要返回列表中最接近的字符串的索引。
我的问题是我不能只使用 pdist 之类的东西,因为它会生成一个 250k^2/2 数组并且会导致内存问题。但是如果我像这样逐行操作
def closest(s):
"""
Returns index of minimum Levenshtein distance
"""
distances = [levenshtein_distance(s, X[i]) for i in range(len(X))]
minimum_distance = min(i for i in distances if i > 0)
return distances.index(minimum_distance)
这也将非常低效,因为它没有像 pdist 那样进行优化,并且与生成密集矩阵相同。
有人有什么建议吗?非常感谢!
解决方案
推荐阅读
- php - 将天添加到空数据库时间
- flutter - 如何为子集合firestore颤振自动创建字段
- database - 按钮正在生成空查询,WHERE 子句不起作用
- java - MultipartUpload 多个文件的附加信息
- python - 与 SIFT 匹配后如何应用 Delaunay 变换
- json - 如何在 Flutter 中初始化现有模型中的新变量
- swift - 以编程方式禁用标签栏故事板外观设置
- generics - 如何制作可以表现得像整数的自定义结构
- python - print(range(…)) 语句输出是“range(…)”而不是整数值
- traefik - 带有 Traefik 的码头软件