У меня есть несколько текстовых файлов, которые я хочу сравнить с списком слов, состоящим из выражений и отдельных слов. Желательным результатом должен быть словарь, содержащий все элементы этого списка в качестве ключей и их соответствующую частоту в текстовом файле как значение. Для построения списка словаря, мне нужно, чтобы соответствовать два списка вместе,Проверить текст/строку для наличия предопределенных элементов списка
list1 = ['accounting',..., 'yields', 'zero-bond']
list2 = ['accounting', 'actual cost', ..., 'zero-bond']
vocabulary_list = ['accounting', 'actual cost', ..., 'yields', 'zero-bond']
sample_text = "Accounting experts predict an increase in yields for zero-bond and yields for junk-bonds."
desired_output = ['accounting':1, 'actual cost':0, ..., 'yields':2, 'zero-bond':1]
, что я пробовал:
def word_frequency(fileobj, words):
"""Build a Counter of specified words in fileobj"""
# initialise the counter to 0 for each word
ct = Counter(dict((w, 0) for w in words))
file_words = (word for line in fileobj for word in line)
filtered_words = (word for word in file_words if word in words)
return Counter(filtered_words)
def print_summary(filepath, ct):
words = sorted(ct.keys())
counts = [str(ct[k]) for k in words] with open(filepath[:-4] + '_dict' + '.txt', mode = 'w') as outfile:
outfile.write('{0}\n{1}\n{2}\n\n'.format(filepath,', '.join(words),', '.join(counts)))
return outfile
Есть ли способ сделать это в Python? Я понял, как управлять этим с помощью словарного списка слов (1token), но не смог найти решение для случая с несколькими словами?
Какое у вас решение для одного слова? Каким образом (ы) это не работало для выражений? –
def word_frequency (fileobj, words): «" Создать счетчик заданных слов в файлеobj "" " # инициализировать счетчик 0 для каждого слова ct = Counter (dict ((w, 0) для w в словах)) file_words = (слово для строки в fileobj для слова в строке) filtered_words = (слово в слово file_words, если слово в словах) возвращает счетчик (filtered_words) –
защиту print_summary (путь_к_файл, кт): слова = отсортировано (ct.keys()) counts = [str (ct [k]) для k в словах] с открытым (путь к файлу [: - 4] + '_dict' + '.txt', mode = 'w') в качестве outfile : outfile.write ('{0} \ n {1} \ n {2} \ n \ n'.format (filepath,', '.join (words),', '.join (counts))) return outfile –