有人可以指出如何执行此任务的正确方向: 我有很多带有这种桶的字符串数组:
我需要得到这个:两年前有人这样做
任何算法或库的链接都会很棒。这些字符串来自OCR,有时OCR在字母/单词中出错,但我有2-5种不同的字符串拼写。
更新 基于@alec_djinn的建议,我发现了可以创建"中位数"的python库。基于Levenshtein距离的字符串。 https://rawgit.com/ztane/python-Levenshtein/master/docs/Levenshtein.html#Levenshtein-median
答案 0 :(得分:1)
您可以使用sequence alignment算法,然后在对齐的序列上找到consensus。
有大量的文库和软件可用,但它们通常仅适用于生物序列(DNA,RNA,蛋白质)。一个用于通用字符串对齐的python库是https://pypi.python.org/pypi/alignment/
一旦序列对齐,您就可以使用以下(非常基本的)计算共识的方式。
def compute_consensus(sequences):
consensus = ''
for i in range(len(sequences[0])):
char_count = Counter()
for seq in sequences:
char_count.update(seq[i])
consensus += char_count.most_common()[0][0]
return consensus.replace('-','') #assuming '-' represent deleted letters
其中sequences
是对齐序列的列表。所有对齐的序列应具有相同的长度。