2015-06-21 2 views
3

Я хотел бы создать таблицу, которая показывает частоты некоторых слов в 3 текстах, тогда как тексты - это столбцы, а слова - это строки.Создайте кортеж токенов и тексты для условного распределения частот

В таблице я хотел бы посмотреть, какое слово появляется, как часто в тексте.

Это мои тексты и слова:

texts = [text1, text2, text3] 
words = ['blood', 'young', 'mercy', 'woman', 'man', 'fear', 'night', 'happiness', 'heart', 'horse'] 

Для того, чтобы создать условное распределение частот, что я хотел, чтобы создать список кортежей, которые должны выглядеть как много = [(«text1», «кровь») ('text1', 'молодой'), ... ('text2', 'кровь'), ...)

Я попытался создать много, как это:

lot = [(words, texte) 
    for word in words 
    for text in texts] 

Вместо того, чтобы много = ('text1', 'blood') и т. д. вместо 'text1' - это целое t ext в списке.

Как создать список кортежей, предназначенных для условной функции распределения частот?

+0

Не уверен, что я полностью понимаю, что вы хотите, но это может помочь http://stackoverflow.com/questions/30970342/remove- пунктуация-с-а-лист/30970369 # 30970369 –

ответ

0

Надеюсь, я правильно понял ваш вопрос. Я думаю, что вы назначаете как переменные «слово», так и «тексты» на свой собственный кортеж.

Попробуйте следующее:

texts = [text1, text2, text3] 
words = ['blood', 'young', 'mercy', 'woman', 'man', 'fear', 'night', 'happiness', 'heart', 'horse'] 
lot = [(word, text) 
for word in words 
for text in texts] 

Edit: Поскольку изменение является настолько тонким, я должен разработать немного больше. В исходном коде вы устанавливали «слова» и «тексты» в свой собственный кортеж, т. Е. Вы назначали весь массив, а не каждый элемент массива.

0

Я думаю, что это вложенное понимание списка может быть тем, что вы пытаетесь сделать?

lot = [(word, 'text'+str(i)) 
    for i,text in enumerate(texts) 
    for word in text.split() 
    if word in words] 

Однако вы можете рассмотреть с помощью Counter вместо:

from collections import Counter 
counts = {} 
for i, text in enumerate(texts): 
    C = Counter(text.split()) 
    for word in words: 
     if word in C: 
     counts[word]['text'+str(i)] = C[word] 
     else: 
     counts[word]['text'+str(i)] = 0 
Смежные вопросы