代码之家  ›  专栏  ›  技术社区  ›  Bonson

python中字典排序不正确

  •  0
  • Bonson  · 技术社区  · 9 年前

    我的代码应该输出语料库中频率最高的前10个单词。然而,它给出了10个随机单词的输出。

    from nltk.corpus import brown
    import operator
    
    brown_tagged_sentences = brown.tagged_sents(categories='news')
    fd=nltk.FreqDist(brown.words(categories='news'))
    sorted_fd = dict(sorted(fd.items(), key=operator.itemgetter(1), reverse=True))
    print(sorted_fd)
    most_freq_words=list(sorted_fd)[:10]
    for word in most_freq_words:
        print(word,':',sorted_fd[word])
    

    Rae : 1
    discharge : 1
    ignition : 1
    contendere : 1
    done : 24
    meaning : 4
    ashore : 1
    Francesca : 1
    Vietnamese : 1
    data : 4
    

    请帮忙

    2 回复  |  直到 9 年前
        1
  •  2
  •   alexis    9 年前

    FreqDist() 类可以使用该方法按频率降序直接提供其内容 most_common()

    fd=nltk.FreqDist(brown.words(categories='news'))
    for w, f in fd.most_common(10):
        print(w+":", f)
    
        2
  •  0
  •   Bonson    9 年前

    fd=nltk.FreqDist(brown.words(categories='news'))
    sorted_fd = sorted(fd.items(), key=operator.itemgetter(1), reverse=True)
    most_freq_words = [w for w,c in sorted_fd]
    most_freq_words = most_freq_words[:10]
    for word in most_freq_words:
        print(word,':',fd[word])