Python - очистка данных для запуска априорного алгоритма

У меня есть основной список всех слов, используемых в наборе статей, и теперь я пытаюсь подсчитать появление каждого слова в основном списке в каждой статье. Затем я попытаюсь построить некоторые правила ассоциации для данных. Например, Мои данные могут выглядеть так:

master_wordlist = ['dog', 'cat', 'hat', 'bat', 'big']
article_a = ['dog', 'cat', 'dog','big']
article_b = ['dog', 'hat', 'big', 'big', 'big']

Мне нужно получить мои данные в этом формате:

Article        dog    cat    hat    bat    big
article_a      2      1      0      0      1
article_b      1      0      1      0      3

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


person flyingmeatball    schedule 12.05.2013    source источник


Ответы (1)


Вы можете использовать collections.Counter здесь:

from collections import Counter
master_wordlist = ['dog', 'cat', 'hat', 'bat', 'big']
article_a = ['dog', 'cat', 'dog','big']
article_b = ['dog', 'hat', 'big', 'big', 'big']

c_a = Counter(article_a)
c_b = Counter(article_b)

print [c_a[x] for x in master_wordlist]
print [c_b[x] for x in master_wordlist]

вывод:

[2, 1, 0, 0, 1]
[1, 0, 1, 0, 3]
person Ashwini Chaudhary    schedule 12.05.2013
comment
Спасибо за твою помощь! Я не знал, что могу перебирать такие кортежи. Мне придется зациклить раздел печати, потому что на самом деле у меня ближе к 2000 статьям, чем к двум, которые я перечислил здесь, но решение все еще верное. Я ценю помощь. - person flyingmeatball; 13.05.2013