Nltk .most_common(), в каком порядке он возвращается?

Я нашел частоту биграмм в некоторых предложениях, используя:

import nltk 
from nltk import ngrams
mydata = “xxxxx"
mylist = mydata.split()
mybigrams =list(ngrams(mylist, 2))
fd = nltk.FreqDist(mybigrams)
print(fd.most_common())

При распечатке биграмм с наиболее распространенными частотами это происходит 7 раз, тогда как все 95 других биграмм происходят только 1 раз. Однако, сравнивая биграммы с моими предложениями, я не вижу логического порядка распечатки биграмм с частотой 1. Кто-нибудь знает, есть ли какая-либо логика в том, как.most_common() печатает биграммы, или это генерируется случайным образом?

заранее спасибо

1 ответ

Краткий ответ, основанный на документации коллекций. Counter.most_common:

Элементы с равным количеством упорядочены произвольно:

В текущих версиях НЛТК, nltk.FreqDist основывается на nltk.compat.Counter, На Python 2.7 и 3.x, collections.Counter будет импортирован из стандартной библиотеки. На Python 2.6 NLTK предоставляет свою собственную реализацию.

Для получения дополнительной информации посмотрите исходный код:
https://github.com/nltk/nltk/blob/develop/nltk/compat.py

В заключение, не проверяя все возможные конфигурации версий, вы не можете ожидать, что слова с одинаковой частотой будут упорядочены.

Другие вопросы по тегам