Python for循环在用户定义的函数中不起作用

时间:2018-07-27 14:30:31

标签: python python-3.x function gensim cosine-similarity

我有gensim预训练模型,我试图使用for i,q in model.most_similar('politics'): print (i) 查找最相似的单词,所以可以说,我有一个名为“ political”的单词,所以我要做的就是

def taxonomy(word):
    for i,q in model.most_similar(word):
        print (i)

这使我输出为单词列表。但是,当我将其放入函数中时,同样的事情是:

taxonomy('politics')

当我使用ValueError: cannot compute similarity with no input时,出现错误:i。我做错了吗?

编辑:

如何将politics附加到与我的单词同名的空白数组中。也就是说,目前的阵列名称应为def taxonomy(word): word=[] for i,q in model.most_similar(word): word.append(i) return word ,我已经这样做了,但是没有用

{{1}}

2 个答案:

答案 0 :(得分:0)

查看您的最新编辑,需要修复一些问题。 由于您要使用与输入word相同的名称来命名列表,因此一种解决方案是使用全局变量并使用politics来创建列表。我已经调整了一些间距。例如,您是在for循环内而不是之后返回列表。有关全局变量的信息,您可以找到文档here

def taxonomy(word):
    g = globals()
    g[word] = []
    for i, q in model.most_similar(word):
        g[word].append(i)
    return g[word]

相关示例:出于显示目的,我使用enumerate代替了model.most_similar。您的函数会返回您在函数中创建的列表以及全局创建的列表,因此您可以在其他地方使用而无需再次调用该函数。

def taxonomy(word):
    g = globals()
    g[word] = []
    for i, q in enumerate(word):
        g[word].append(i)
    return g[word]

taxonomy('politics')
[0, 1, 2, 3, 4, 5, 6, 7]

politics
[0, 1, 2, 3, 4, 5, 6, 7]

答案 1 :(得分:0)

你可以这样做 -

k = [i for i, j in model.most_similar(word)] 打印(k)