奇怪的Bigram问题

问题描述:

我正在与bigrams合作,我有一个问题。我有正确的答案,但在错误格式奇怪的Bigram问题

import nltk 
import collections 
import collections 
from collections import defaultdict 

cnt = collections.Counter() 

tokens = [['a','b','c','d'],['b','c','a','b','c']] 

def bigram(tokens, n): 
    for toks in tokens: 
     cnt.update(nltk.bigrams(toks)) 

    return cnt.most_common(n) 

print bigram(tokens, 2) 

我能得到正确的输出:[(('b', 'c'), 3), (('a', 'b'), 2)] 但我需要它是[(('b c'), 3), (('a b'), 2)]。我问教授我是否可以重新排列参数,但他坚持要求输入必须是bigram(tokens, n)才能获得完整的学分。

只需使用

return [(" ".join(tup), count) for tup, count in cnt.most_common(n)] 

让人印象深刻,与列表内涵,优雅的处理元组和长度昧加入的元组的教授:d

顺便说一句,我总是建议是诚实 - - 所以你可能想说“互联网上的某个人给了我这个提示,但我可以理解为什么这会起作用” - 这样你就永远不会对抄袭负责,并且会为可能的考试做好准备。

+0

不要写作业。他不会学到任何东西。 – user38034 2015-02-06 20:11:13

+1

@ user38034:他的教授将足够聪明,可以在他的几行代码中使用谷歌,并且会在这里结束;谷歌真的不是剽窃者的朋友。我相信Datguyovrder足够聪明,可以真正理解我写的东西 - 否则,他的教授就会被注意到,因为很明显,如果有人一直在试图让他的不合规解决方案通过,但是突然出现了正确的一个,你开始提问像“这是如何工作的?”。 – 2015-02-06 20:14:31

+0

我认为教授有更重要的事情要做,而不是谷歌他的学生的代码。 – user38034 2015-02-06 20:21:25