ДЗ №11
В пределах одного ДЗ оценка ставится как максимум из баллов за решённые задачи.
Требования к оформлению (за них оценка никогда не опускается более, чем на 2 балла; за них оценка никогда не падает ниже 7 баллов):
- Файл с программой должен называться именно так, как указано в задании
- Во всех программах должны быть содержательные имена переменных
- Во всех программах не должно быть строк длиннее 75 символов, а если такие строки возникли, части таких строк нужно выносить в отдельные переменные или функции.
- Функции должны сопровождаться docstring
- Тело любой функции должно иметь длину не более 10 строк
- Программа не должна содержать (в разумных пределах) дублирования кода
В данном задании пропуск любого из шагов, помеченных словом ЧИТ: приводит к потере 1 балла итоговой оценки.
- Дедлайн по ДЗ №10 продлён до 13:40 четверга, 4.12.2014
- Как установить matplotlib, numpy, и много всего полезного. Варианты:
Win: Открыть сайт Christoph Gohlke, найти там scipy-stack, скачать версию для вашей версии питона, запустить. Предупреждение: это довольно большой файл ~100M, который качается порядка получаса-часа (у Кристофа довольно небыстрый сервер).
Win,Mac: Поставить anaconda – это ещё один дистрибутив питона, в котором всё включено. Вероятно, после этого у вас на компьютере заведётся зоопарк разнообразных питонов. Чтобы не страдать от избытка питонов лучше в таком случае других питонов снести.
Lin: sudo apt-get install python-matplotlib
- Как установить matplotlib, numpy, и много всего полезного. Варианты:
Создайте в репозитории папку hw11
(10 баллов) TF-IDF. Дедлайн 13:40 четверга, 11.12.2014
Возмите небольшой корпус. (Если у вас нет ничего интересного, возмите, например, вот этот).
Лемматизируйте его. ЧИТ: или работайте со словоформами
Прочитайте его как набор тектсов, а каждый текст как список лемм. ЧИТ: или возмите всё готовенькое тут: import poni; print(poni.texts[0][:10])
Составьте множество уникальных лемм всего корпуса. ЧИТ: или возмите всё готовенькое тут: import uniq; print(uniq.lemmas[:10])
Составьте словарь idf, в котором для каждой леммы хранится log(N/df), где N – число документов, df – число документов, содержащих данную лемму.
Составьте словарь tfidf, в котором ключом является пара из идентификатора документа и леммы, а значением является tfidf для этой пары. (tf считается просто как число вхождений леммы в данный документ).
- Выведите на экран 10 пар лемма-документ с наибольшим значением tf-idf.
(10 баллов) TF-IDF (версия, более совместимая с лингвистикой). Дедлайн 13:40 четверга, 11.12.2014. Задание аналогично 1, но
- Вы можете использовать любую из более сложных метрик и для TF, и для IDF. (Единственный неприемлемый вариант: заменять IDF на частотный словарь, не привязанный к вашему корпусу)
- Вы можете использовать вместо лемм биграммы. Либо вы можете сделать общий словарь df, idf, tf, tf_idf для совокупностьи из всех лемм и всех биграмм.
- TF и top10 можно строить по одному документу.
- Выберите набор из 10 служебных слов, которые вы считали бы стоп-словами, и выведите TF-IDF и положение в упорядоченном списке для них.