Kodomo

Пользователь

ДЗ №9

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

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

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

Требования к оформлению обвычные (и, как обычно, сказываются на оценке только в диапазоне 7~10 баллов):

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

Прочитайте документацию питона и/или какой-нибудь из многочисленных учебников про регулярные выражения.

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

  1. Создайте папку hw9 и выполняйте работу в ней.

  2. (6 баллов) Напишите программу dates.py, которая читает файл corpus.txt и пишет в файл dates.txt список дат, упоминающихся в тексте. Возмите, например, текст википедии про Москву, и найдите в нём все упоминания дат и интервалов времени.

  3. (8 баллов) (Для зачёта этой задачи задача 1 должна быть решена). Напишите программу patronyms.py, которая читает файл corpus.txt и пишет в файл patronyms.txt список отчеств в корпусе

  4. (10 баллов) Напишите программу honorables.py, которая читает файл corpus.txt, ищет в нём отчества, и вокруг них слова, похожие на имя/фамилию, и создаёт два файла: 'honorables-freq.csv', в котором для каждого полного имени указано количество его вхождений в текст, и 'honorables-loc.csv', в котором для каждого отчества указано: оно, его положение (в символах) в тексте, полное имя.

  5. (8 баллов) Напишите программу wikidata.py. Откройте какую-нибудь статью из википедии и сохраните её текст себе в программу в переменную text. Статья должна быть достаточно большой (больше 10 абзацев).

    • С помощью re.findall() найдите на этой странице:

    • все номера сносок (число в квадратных скобках)
    • все римские числа
    • все числа, стоящие сами по себе (вокруг них пробелы; включая дробные числа, числа, разбитые пробелами на разряды)
    • как можно больше имён собственных (начинаются с большой буквы, перед ними нет конца предложения)
    • как можно больше прилагательных (нужно напрячься и придумать, какие у них бывают окончания)
  6. (9 баллов) Напишите программу phones.py. Откройте на сайте http://mospages.ru/ страницу любого раздела или буквы и сохраните её текст в файл phones.txt. В программе откройте файл, найдите на странице все номера телефонов. Выведите на экран 30 самых частых номеров АТС (первые три цифры после номера региона) и их частоты.