【问题标题】:python ValueError: too many values to unpack (expected ....)python ValueError:解包的值太多(预期....)
【发布时间】:2018-04-27 19:13:19
【问题描述】:

我定义了以下函数,它接受一个输入字符串,并将其与一个大字符串列表进行比较(均使用 tfidf 向量化):

def find_new_similar(tfidf_matrix2, index, tfidf_matrix, top_n = 5):
    cosine_similarities = linear_kernel(tfidf_matrix2[index:index+1], tfidf_matrix).flatten()
    related_docs_indices = [i for i in cosine_similarities.argsort()[::-1] if i != index]
    return [(i, cosine_similarities[i]) for i in related_docs_indices][0:top_n], index

当我调用这个函数时,我的输出是:

    find_new_similar(tfidf_matrix2, 1, tfidf_matrix)
    Out[15]: 
    ([(923576, 0.51192576542407131),
      (558563, 0.51192576542407131),
      (1554977, 0.51192576542407131),
      (1604772, 0.51192576542407131),
      (514529, 0.50251903670563314)],
     1)

其中每个元组的第一个元素(即 923576、558563)是大型术语文件的索引。我想使用这些索引并返回索引处的值。

I have tried:


for i, score in find_new_similar(tfidf_matrix2, 0, tfidf_matrix):
       print (score, corpus[i], i)
Traceback (most recent call last):

  File "<ipython-input-18-792db65f6fd0>", line 1, in <module>
    for i, score in find_new_similar(tfidf_matrix2, 0, tfidf_matrix):

ValueError: too many values to unpack (expected 2)

谁能帮忙?谢谢?

【问题讨论】:

    标签: python


    【解决方案1】:

    你的函数返回一个列表和index

    return [(i, cosine_similarities[i]) for i in related_docs_indices][0:top_n], index
    

    将您的代码更改为

    for i, score in find_new_similar(tfidf_matrix2, 0, tfidf_matrix)[0]:
           print (score, corpus[i], i)
    

    获取列表并对其进行迭代。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-05
      • 2017-08-29
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      • 2017-12-14
      相关资源
      最近更新 更多