Форум сайта python.su
Дан текстовый файл, содержащий большой текст на естественном языке. Требуется вычислить частотность появления слов в исходном тексте и вывести список слов в порядке убывания частоты появление (ее тоже вывести). Слова короче 3 букв можно игнорировать. Для упрощения слова не нужно приводить в исходную форму, то есть слова в разной форме (число, падеж и т.п.) считать разными.
Офлайн
#содержимое файла split ом в список
# создать пустой словарь слов
#в цикле читать каждое слово из списка
# если len(слово) < 3 :
# если ключа слова нету в словаре добавить ключ присвоить ему значение 1
# иначе слово есть в словаре то добавить к значению +1
преобразовать словарь слов в список списков. отсортировать . вывести .
Офлайн
EmiliusЭто лишнее. Нужно использовать метод items словаря, и далее sorted использовать
преобразовать словарь слов в список списков
Офлайн
В качестве словаря здесь уместнее юзать
dict_word = collections.defaultdict(int)
if len(word) >= 3: dict_word[word] += 1
Отредактировано dimy44 (Окт. 2, 2013 16:48:07)
Офлайн
VikkiЗабавная формулировка
текст на естественном языке
#!/usr/bin/env python2 #coding: utf-8 import collections as C count_word = C.Counter() with open('input.txt', 'r') as f_in: for line in f_in.readlines(): for word in line.split(): if not len(word.decode('utf-8'))<3: count_word[word] += 1 print repr(count_word.most_common(10)).decode('string_escape')
[('что', 31), ('она', 26), ('Золушка', 21), ('только', 20), ('была', 18), ('сказала', 15), ('как', 14), ('так', 11), ('еще', 10), ('чем', 8)]
Отредактировано Budulianin (Окт. 2, 2013 20:23:59)
Офлайн
Budulianinестественный язык подразумевает возможное наличие пунктуации и различных регистров
from collections import Counter import re Counter(map(str.lower, re.findall('\w{3}\w*', open('LICENSE').read()))).most_common(10) Out[4]: [('the', 80), ('psf', 55), ('and', 47), ('python', 46), ('yes', 44), ('license', 37), ('any', 37), ('agreement', 32), ('this', 30), ('licensee', 29)]
Офлайн
Vikki
интерсено почему парни не пишут “Помогите,плииииз, с несколькими задачками парню!” ?
Не красиво как-то этим пользоваться в интернете
Офлайн
SingularityЗато эффективно.
Vikkiинтерсено почему парни не пишут “Помогите,плииииз, с несколькими задачками парню!” ?Не красиво как-то этим пользоваться в интернете
Офлайн
Singularity
интерсено почему парни не пишут “Помогите,плииииз, с несколькими задачками парню!” ?
Отредактировано Budulianin (Окт. 3, 2013 10:36:02)
Офлайн
sergeekНе, хитрый бы так топрно не пёр, скорее написал бы сообщение в женском роде, типа “помогите пожалуйста, я учусь на <гуманитарная специальность> и только начала изучать программирование…”.
Да и вообще, акцентирование на своей половой принадлежности в оп посте наводит на мысль, что это скорее хитрый парень чем нагленькая девушка
Офлайн