提高 numpy 中 levenshtein 距离的性能
Improving performance of levenshtein distance in numpy
我有以下功能:
def levenshtein(seq1, seq2):
size_x = len(seq1) + 1
size_y = len(seq2) + 1
matrix = np.zeros ((size_x, size_y))
matrix[: , 0] = np.arange(size_x)
matrix[0, :] = np.arange(size_y)
for x in range(1, size_x):
for y in range(1, size_y):
if seq1[x-1] == seq2[y-1]:
matrix [x,y] = min(
matrix[x-1, y] + 1,
matrix[x-1, y-1],
matrix[x, y-1] + 1
)
else:
matrix [x,y] = min(
matrix[x-1,y] + 1,
matrix[x-1,y-1] + 1,
matrix[x,y-1] + 1
)
return (matrix[size_x - 1, size_y - 1])
而且我想将它应用于多对字符串,为了尽可能快地完成它我想删除其中的 for 循环并用一些矢量化替换它们,但我找不到好的怎么做,有什么想法吗?
不如用already written python mudule来解决你的问题,而不是重新发明轮子,我也是。你会节省很多时间。
打开 cmd
并写入 pip install python-Levenshtein
,或者如果您使用 git,请转到您的项目文件夹并键入 git clone https://github.com/ztane/python-Levenshtein.git
(github link)。然后打开 python 文件和:
import Levenshtein
Levenshtein.distance('Levenshtein', 'Lenvinsten')
# output will be 4
# ... your code ...
但如果您需要手动编写它,您可以在同一个 link.
中查看其他开发人员或 examples of using Levenshtein module 是如何编写的
我有以下功能:
def levenshtein(seq1, seq2):
size_x = len(seq1) + 1
size_y = len(seq2) + 1
matrix = np.zeros ((size_x, size_y))
matrix[: , 0] = np.arange(size_x)
matrix[0, :] = np.arange(size_y)
for x in range(1, size_x):
for y in range(1, size_y):
if seq1[x-1] == seq2[y-1]:
matrix [x,y] = min(
matrix[x-1, y] + 1,
matrix[x-1, y-1],
matrix[x, y-1] + 1
)
else:
matrix [x,y] = min(
matrix[x-1,y] + 1,
matrix[x-1,y-1] + 1,
matrix[x,y-1] + 1
)
return (matrix[size_x - 1, size_y - 1])
而且我想将它应用于多对字符串,为了尽可能快地完成它我想删除其中的 for 循环并用一些矢量化替换它们,但我找不到好的怎么做,有什么想法吗?
不如用already written python mudule来解决你的问题,而不是重新发明轮子,我也是。你会节省很多时间。
打开 cmd
并写入 pip install python-Levenshtein
,或者如果您使用 git,请转到您的项目文件夹并键入 git clone https://github.com/ztane/python-Levenshtein.git
(github link)。然后打开 python 文件和:
import Levenshtein
Levenshtein.distance('Levenshtein', 'Lenvinsten')
# output will be 4
# ... your code ...
但如果您需要手动编写它,您可以在同一个 link.
中查看其他开发人员或 examples of using Levenshtein module 是如何编写的