Python中的字符串距离矩阵

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个字符串的列表。我想计算距离矩阵,然后再对单词进行聚类。

ela*_*ard 6

只需使用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)