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
В заключение, не проверяя все возможные конфигурации версий, вы не можете ожидать, что слова с одинаковой частотой будут упорядочены.