Aja*_*hav 6 python string machine-learning text-mining levenshtein-distance
如何在Python中计算字符串的Levenshtein距离矩阵
str1 str2 str3 str4 ... strn
str1 0.8 0.4 0.6 0.1 ... 0.2
str2 0.4 0.7 0.5 0.1 ... 0.1
str3 0.6 0.5 0.6 0.1 ... 0.1
str4 0.1 0.1 0.1 0.5 ... 0.6
. . . . . ... .
. . . . . ... .
. . . . . ... .
strn 0.2 0.1 0.1 0.6 ... 0.7
Run Code Online (Sandbox Code Playgroud)
使用Ditance函数,我们可以计算2个单词之间的距离。但是这里有1个包含n个字符串的列表。我想计算距离矩阵,然后再对单词进行聚类。
只需使用pdist接受自定义指标的版本。
Y = pdist(X, levensthein)
Run Code Online (Sandbox Code Playgroud)
而对于levensthein那么你可以使用rosettacode的执行情况,通过建议TANU
如果你想要一个完整的平方矩阵,只需squareform在结果上使用:
Y = scipy.spatial.distance.squareform(Y)
Run Code Online (Sandbox Code Playgroud)
小智 5
这是我的代码
import pandas as pd
from Levenshtein import distance
import numpy as np
Target = ['Tree','Trip','Treasure','Nothingtodo']
List1 = Target
List2 = Target
Matrix = np.zeros((len(List1),len(List2)),dtype=np.int)
for i in range(0,len(List1)):
for j in range(0,len(List2)):
Matrix[i,j] = distance(List1[i],List2[j])
print Matrix
[[ 0 2 4 11]
[ 2 0 6 10]
[ 4 6 0 11]
[11 10 11 0]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4755 次 |
| 最近记录: |