簡體   English   中英

提高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 循環並用一些向量化替換它們,但我找不到一個好的方法來做到這一點,有任何想法嗎?

對我來說,最好使用已經寫好的 python mudule來解決你的問題,而不是重新發明輪子。 你會節省很多時間。

打開cmd並編寫pip install python-Levenshtein ,或者如果您使用 git 轉到您的項目文件夾並鍵入git clone https://github.com/ztane/python-Levenshtein.git鏈接)。 然后一個 python 文件和:

import Levenshtein
Levenshtein.distance('Levenshtein', 'Lenvinsten')
# output will be 4
# ... your code ...

但是,如果您需要手動編寫它,您可以在同一鏈接中查看其他開發人員如何編寫或使用 Levenshtein 模塊的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM