【发布时间】:2018-05-20 17:23:03
【问题描述】:
我需要计算给定语料库中单词之间的正交相似性(编辑/Levenshtein 距离)。
正如基里尔在下面建议的那样,我尝试执行以下操作:
import csv, itertools, Levenshtein
import numpy as np
# import the list of words from csv file
path = '/Users/my path'
file = path + 'file.csv'
with open(file, 'rb') as f:
reader = csv.reader(f)
wordlist = list(reader)
wordlist = np.array(wordlist) #make it a np array
wordlist2 = wordlist[:,0] #subset the first column of the imported list
for a, b in itertools.product(wordlist, wordlist):
if a < b:
print(a, b, Levenshtein.distance(a, b))
但是,弹出以下错误:
ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
我理解代码中的歧义,但有人可以帮我弄清楚如何解决这个问题吗?谢谢!
【问题讨论】:
-
关于你的新代码,我看到
test.csv只包含test\n:wordlist = list(reader) # Error: iterator should return strings, not bytes (did you open the file in text mode?)。因此,由于省略了堆栈跟踪,因此您的错误并不清楚。我的建议是逐步处理整个事情:首先(使用单独的程序)准备一个仅包含换行符分隔单词的文本文件,检查文件,然后使用words = sorted(set(s.strip() for s in open(filename))运行我的答案中的代码。 -
知道了!谢谢!!
标签: python arrays numpy itertools levenshtein-distance