2016-09-22 3 views
0

Я беру строку, tokenizing, и хочу посмотреть на наиболее распространенных биграммах, вот что я получил:обращающихся элементов счетчика, содержащего ngrams

import nltk 
import collections 
from nltk import ngrams 

someString="this is some text. this is some more test. this is even more text." 
tokens=nltk.word_tokenize(someString) 
tokens=[token.lower() for token in tokens if len()>1] 

bigram=ngrams(tokens,2) 
aCounter=collections.Counter(bigram) 

Если I:

print(aCounter) 

Затем он будет выводить битрамы в отсортированном порядке.

for element in aCounter: 
    print(element) 

Распечатайте элементы, но не с графом, а не по порядку. Я хочу сделать цикл for, где я распечатываю X самых распространенных биграмм в тексте.

Я по существу стараюсь одновременно изучать как Python, так и nltk, так что это может быть поэтому, потому что я боюсь здесь (я предполагаю, что это тривиальная вещь).

ответ

2

Возможно, вы ищете то, что уже существует, а именно метод most_common на счетчиках. Из документов:

Возврат списка из n самых распространенных элементов и их значений от самых распространенных до минимумов. Если n опущено или None, most_common() возвращает все элементы в счетчике. Элементы с одинаковыми подсчетами упорядочены произвольно:

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

from collections import Counter 

# initialize with silly value. 
c = Counter('aabbbccccdddeeeeefffffffghhhhiiiiiii') 

# Print 4 most common values and their respective count. 
for val, count in c.most_common(4): 
    print("Value {0} -> Count {1}".format(val, count)) 

, которая печатает:

Value f -> Count 7 
Value i -> Count 7 
Value e -> Count 5 
Value h -> Count 4 
Смежные вопросы