python中上下文最常用词语料库

python中上下文最常用词语料库,python,nltk,Python,Nltk,在使用以下定义查找语料库中最常用的10个单词(使用Python)之后,我必须比较这10个单词在所述语料库的不同子类别中的上下文 def meest_freq(mycorpus): import string woorden = mycorpus.words() zonderhoofdletters = [word.lower() for word in woorden] filtered = [word for word in zonderhoofdletters

在使用以下定义查找语料库中最常用的10个单词(使用Python)之后,我必须比较这10个单词在所述语料库的不同子类别中的上下文

def meest_freq(mycorpus):
    import string
    woorden = mycorpus.words()
    zonderhoofdletters = [word.lower() for word in woorden]
    filtered = [word for word in zonderhoofdletters if word not in stopList]
    no_punct = [s.translate(None, string.punctuation) for s in filtered]
    word_counter = {}
    D = defaultdict(int)
    for word in no_punct:
        D[word] +=1
    popular_words = sorted(D, key = D.get, reverse = True)
    woord1 = popular_words[1]
    woord2 = popular_words[2]
    woord3 = popular_words[3]
    woord4 = popular_words[4]
    woord5 = popular_words[5]
    woord6 = popular_words[6]
    woord7 = popular_words[7]
    woord8 = popular_words[8]
    woord9 = popular_words[9]
    woord10 = popular_words[10]
    print "De 10 meest frequente woorden zijn: ", woord1, ",", woord2, ',', woord3, ',', woord4, ',', woord5, ',', woord6, ',', woord7, ',', woord8, ',', woord9, "en", woord10
    return popular_words
我想使用以下代码来执行此操作:

def context(cat):
    words = popular_words[:10]
    context = words.concordance()
    print context
不幸的是,我一直得到“AttributeError:'str'对象没有属性“concordance” 有人知道为什么我不能在第二个def中使用第一个代码块的结果吗?我想通过使用return语句,它应该能够工作

有人知道为什么我不能在第二个def中使用第一个代码块的结果吗?我想通过使用return语句,它应该能够工作

因为函数不返回变量,所以它们返回值

上下文中使用的
流行词
不是来自
meest_-freq
;它来自某个全局变量。在
meest_-freq
内部,
流行词
是一个局部词。这是因为规则:如果你在函数中指定了一个名称,它就是一个局部词,除非你对t另有说明他使用了
global
语句。在
context
中,没有对
常用词
赋值,因此Python会查找具有该名称的全局。该全局包含一些您不期望的内容,可能是因为您正在解释器中测试函数(可能是您在测试和修复以前版本的函数后留下的…)

请不要尝试为此使用全局变量。您已经正确地学到了从函数中获取信息的方法是通过返回值。与此相对应的是,将信息作为参数传递到函数中的方法。与
meest\u freq
了解语料库的方法相同(因为您以
mycorpus
的形式传入了它),所以应该让
context
知道流行词

在某个地方,您必须有调用这两个函数的代码。该代码应该获取从
meest\u freq
返回的值,并将其传递到
上下文
,与将语料库传递到
meest\u freq
的方式相同


或者,如果你将语料库传递给
上下文
,那么你可以在里面打电话。由于你的名字,很难知道什么是组织事情的正确方式;我不知道
应该是什么意思,或者
上下文
与任何事情有什么关系,或者
一致性
在这里意味着什么的上下文。

您实际上并没有从函数中获取返回值-您必须使用
words=meest\u freq(yourcorpus)[:10]
它来自nltk。我们在课堂上看到了它