Kodomo

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

ДЗ №10

Дедлайн: 13:40 четверг 27.11.2014.

В пределах одного ДЗ оценка ставится как максимум из баллов за решённые задачи.

Требования к оформлению (за них оценка никогда не опускается более, чем на 2 балла; за них оценка никогда не падает ниже 7 баллов):

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


Как установить matplotlib, numpy, и много всего полезного. Варианты:

  1. Открыть сайт Christoph Gohlke, найти там scipy-stack, скачать версию для вашей версии питона, запустить. Предупреждение: это довольно большой файл ~100M, который качается порядка получаса-часа (у Кристофа довольно небыстрый сервер).

  2. Поставить anaconda – это ещё один дистрибутив питона, в котором всё включено. Вероятно, после этого у вас на компьютере заведётся зоопарк разнообразных питонов. Чтобы не страдать от избытка питонов лучше в таком случае других питонов снести.

  1. (6 баллов) Соберите небольшой (50К словоупотреблений) корпус либо новостных, либо энциклопедических текстов (он должен за 10 минут собираться с помощью Ctrl-C Ctrl-V. Если за 10 минут честного кропотливого труда, перед которым вы тщательно нашли место, где много больших страниц, у вас собралось меньше текста, то оставьте меньше; автоматизировать этот процесс нисколько не возбраняется, но в любом случае не тратьте на него много времени). В качестве второго корпуса возмите Анну Каренину. Сохраните корпуса в файлы corpus1.txt, corpus2.txt. Напишите программу genre-by-letters.py, которая наглядно демонстрирует ответ на вопрос: можно ли различить предложения этих двух текстов, пользуясь лишь признаками длина предложения в буквах, число различных букв в предложении, число гласных в предложении, медиана числа букв в слове, медиана числа гласных в слове. Для этого превратите каждое предолжение в список соответствующих чисел. Примените к данным метод главных компонент и нарисуйте данные из первых двух его осей, а также выведите на экран матрицу его преобразований.

  2. (8 баллов) Возмите корпуса текстов двух разных жанров. (Например, сонеты Шекспира и Анну Каренину) в файлы corpus1.txt, corpus2.txt. Прогоните тексты через mystem для получения грамматических разборов. Постройте для каждого предложения признаки: число прилагательных, число существительных, число глаголов, число наречий, число местоимений. Примените к данным метод главных компонент. Правда ли, что существует линейная комбинация признаков (т.е. значение по первой оси в преобразованных методом главных компонент данных), и пороговое значение, при которых больше 70% текстов каждого жанра находятся с одной стороны от порогового значения? Напишите программу genre-by-pos.py, которая демонстрирует ответ на этот вопрос.

  3. (10 баллов) Соберите три разных корпуса (например, сонеты, Анна Каренина, и новости либо энциклопедии) в файлы corpus1.txt, corpus2.txt, corpus3.txt. Напишите программу genre-visualize.py, которая ищет значимые признаки среди всех, упоминавшихся в задании, а также среди длины предложения в словах, средней и едианной длинах слов (добавление сюда любых других признаков, которые придут к вам в голову). Программа сохраняет в несколько файлов попарные график каждой пары признаков (X – один признак, Y – другой) и результат работы SVD. Программа выводит на экран три самх главных входных признака и их веса.