【发布时间】:2014-02-25 14:34:12
【问题描述】:
我正在尝试编写一个程序来查找 2 个文档文件之间的相似性。 出于这个原因,我正在关注this 链接和帖子from
但是,出现了一个错误,上面写着
"list object is not callable"
在
test(tf_idf_matrix,count,nltkutil.cosine_distance)
线。
我使用一个文件作为训练集,另一个文件作为测试集,我的目标是使用test() 使用 tf-idf 输出 2 个文档之间的余弦相似度。
我的代码如下:
def test(tdMatrix,count,fsim):
sims=[]
sims = np.zeros((len(tdMatrix), count))
for i in range(len(tdMatrix)):
for j in range(count):
doc1 = np.asarray(tdMatrix[tdMatrix[i], :].todense()).reshape(-1)
doc2 = np.asarray(tdMatrix[tdMatrix[j], :].todense()).reshape(-1)
sims[i, j] = fsim(doc1, doc2)
print sims
def main():
file_set=["corpusA.txt","corpusB.txt"]
train=[]
test=[]
for file1 in file_set:
s="x"+file1
preprocess(file1,s)
count_vectorizer = CountVectorizer()
m=open("xcorpusA.txt",'r')
for i in m:
train.append(i.strip())
#print doc
count_vectorizer.fit_transform(train)
m1=open("xcorpusB.txt",'r')
for i in m1:
test.append(i.strip())
freq_term_matrix = count_vectorizer.transform(test)
#print freq_term_matrix.todense()
tfidf = TfidfTransformer(norm="l2")
tfidf.fit(freq_term_matrix)
#print "IDF:", tfidf.idf_
tf_idf_matrix = tfidf.transform(freq_term_matrix)
print (tf_idf_matrix.toarray())
count=0
for i in tf_idf_matrix.toarray():
for j in i:
count+=1
break
print "Results with Cosine Distance Similarity Measure"
test(tf_idf_matrix,count,nltkutil.cosine_distance)
if __name__ == "__main__":
main()
【问题讨论】:
-
以后请参考sscce.org。您发布的大部分代码与错误无关。
标签: python python-2.7