ДЗ №9
Дедлайн: 16:40 пятница 21.11.2014.
Прежде чем браться за занятие прочитайте все задания. Рекомендую начать с задачи 4, как наиболее простой и поучительной, хотя и довольно объёмной.
Помните, что оценка ставится по максимуму баллов, не обязательно решать все задачи.
Требования к оформлению обвычные (и, как обычно, сказываются на оценке только в диапазоне 7~10 баллов):
- Файл с программой должен называться именно так, как указано в задании
- Во всех программах должны быть содержательные имена переменных
- Во всех программах не должно быть строк длиннее 75 символов, а если такие строки возникли, части таких строк нужно выносить в отдельные переменные или функции.
- Функции должны сопровождаться docstring
- Тело любой функции должно иметь длину не более 10 строк
- Программа не должна содержать (в разумных пределах) дублирования кода
Прочитайте документацию питона и/или какой-нибудь из многочисленных учебников про регулярные выражения.
Ни одно из заданий не предполагает лемматизацию или какую-то пародию на неё. Во всех местах, где у вас может быть вопрос лемма или словоформа, ответ словоформа.
Создайте папку hw9 и выполняйте работу в ней.
(6 баллов) Напишите программу dates.py, которая читает файл corpus.txt и пишет в файл dates.txt список дат, упоминающихся в тексте. Возмите, например, текст википедии про Москву, и найдите в нём все упоминания дат и интервалов времени.
(8 баллов) (Для зачёта этой задачи задача 1 должна быть решена). Напишите программу patronyms.py, которая читает файл corpus.txt и пишет в файл patronyms.txt список отчеств в корпусе
(10 баллов) Напишите программу honorables.py, которая читает файл corpus.txt, ищет в нём отчества, и вокруг них слова, похожие на имя/фамилию, и создаёт два файла: 'honorables-freq.csv', в котором для каждого полного имени указано количество его вхождений в текст, и 'honorables-loc.csv', в котором для каждого отчества указано: оно, его положение (в символах) в тексте, полное имя.
(8 баллов) Напишите программу wikidata.py. Откройте какую-нибудь статью из википедии и сохраните её текст себе в программу в переменную text. Статья должна быть достаточно большой (больше 10 абзацев).
С помощью re.findall() найдите на этой странице:
- все номера сносок (число в квадратных скобках)
- все римские числа
- все числа, стоящие сами по себе (вокруг них пробелы; включая дробные числа, числа, разбитые пробелами на разряды)
- как можно больше имён собственных (начинаются с большой буквы, перед ними нет конца предложения)
- как можно больше прилагательных (нужно напрячься и придумать, какие у них бывают окончания)
(9 баллов) Напишите программу phones.py. Откройте на сайте http://mospages.ru/ страницу любого раздела или буквы и сохраните её текст в файл phones.txt. В программе откройте файл, найдите на странице все номера телефонов. Выведите на экран 30 самых частых номеров АТС (первые три цифры после номера региона) и их частоты.