= ДЗ №9 =

'''Дедлайн: 16:40 пятница 21.11.2014.'''

{{{#!wiki note
Прежде чем браться за занятие прочитайте все задания. Рекомендую начать с задачи 4, как наиболее простой и поучительной, хотя и довольно объёмной.

Помните, что оценка ставится по максимуму баллов, не обязательно решать все задачи.

Требования к оформлению обвычные (и, как обычно, сказываются на оценке только в диапазоне 7~10 баллов):
 * Файл с программой должен называться именно так, как указано в задании
 * Во всех программах должны быть содержательные имена переменных
 * Во всех программах не должно быть строк длиннее 75 символов, а если такие строки возникли, части таких строк нужно выносить в отдельные переменные или функции.
 * Функции должны сопровождаться docstring 
 * Тело любой функции должно иметь длину не более 10 строк
 * Программа не должна содержать (в разумных пределах) дублирования кода
}}}

Прочитайте [[https://docs.python.org/3/library/re.html|документацию питона]] и/или [[http://regexone.com/http://regexone.com/|какой-нибудь]] из многочисленных учебников про регулярные выражения. 

Ни одно из заданий не предполагает лемматизацию или какую-то пародию на неё. Во всех местах, где у вас может быть вопрос лемма или словоформа, ответ словоформа.

 0.#0 Создайте папку `hw9` и выполняйте работу в ней.
 1. ''(6 баллов)'' Напишите программу `dates.py`, которая читает файл `corpus.txt` и пишет в файл `dates.txt` список дат, упоминающихся в тексте. Возмите, например, текст [[https://ru.wikipedia.org/wiki/Москва|википедии про Москву]], и найдите в нём все упоминания дат и интервалов времени.
 2. ''(8 баллов)'' (Для зачёта этой задачи задача 1 должна быть решена). Напишите программу `patronyms.py`, которая читает файл `corpus.txt` и пишет в файл `patronyms.txt` список отчеств в корпусе
 3. ''(10 баллов)'' Напишите программу `honorables.py`, которая читает файл `corpus.txt`, ищет в нём отчества, и вокруг них слова, похожие на имя/фамилию, и создаёт два файла: 'honorables-freq.csv', в котором для каждого полного имени указано количество его вхождений в текст, и 'honorables-loc.csv', в котором для каждого отчества указано: оно, его положение (в символах) в тексте, полное имя.
 4. ''(8 баллов)'' Напишите программу `wikidata.py`. Откройте какую-нибудь статью из википедии и сохраните её текст себе в программу в переменную `text`. Статья должна быть достаточно большой (больше 10 абзацев).
  . С помощью `re.findall()` найдите на этой странице:
  1. все номера сносок (число в квадратных скобках)
  2. все римские числа
  3. все числа, стоящие сами по себе (вокруг них пробелы; включая дробные числа, числа, разбитые пробелами на разряды)
  4. как можно больше имён собственных (начинаются с большой буквы, перед ними нет конца предложения)
  5. как можно больше прилагательных (нужно напрячься и придумать, какие у них бывают окончания)
 5. ''(9 баллов)'' Напишите программу `phones.py`. Откройте на сайте http://mospages.ru/ страницу любого раздела или буквы и сохраните её текст в файл `phones.txt`. В программе откройте файл, найдите на странице все номера телефонов. Выведите на экран 30 самых частых номеров АТС (первые три цифры после номера региона) и их частоты.