Я пытаюсь сделать счетчик, который использует список триграмм POS, чтобы проверить большой список триграмм и найти их частоту. Мой код до сих пор выглядит следующим образом:Не удается заставить Counter() работать в python
from nltk import trigrams
from nltk.tokenize import wordpunct_tokenize
from nltk import bigrams
from collections import Counter
import nltk
text= ["This is an example sentence."]
trigram_top= ['PRP', 'MD', 'VB']
for words in text:
tokens = wordpunct_tokenize (words)
tags = nltk.pos_tag (tokens)
trigram_list=trigrams(tags)
list_tri=Counter (t for t in trigram_list if t in trigram_top)
print list_tri
я получаю пустой счетчик обратно. Как мне исправить это? В более ранней версии я получил данные назад, но продолжал подсчитывать навсегда итерацию (в реальной программе текст представляет собой набор разных файлов). У кого-нибудь есть идея?
Что делает '[t для t в trram_list, если t в trigram_top]' дает вам? Итак, удалите 'Counter', сделайте список. –
этот оператор проверяет каждую триграмму в тексте по сравнению с каждой триграммой в верхней части триграммы. Что вы имеете в виду, сделайте список? – Shifu
Выражение, которое я вам дал, - это понимание списка. Это позволяет вам проверить, если вы вообще * даете * что-либо * на 'Counter()'. –