Skip to content

Latest commit

 

History

History
114 lines (75 loc) · 6.94 KB

File metadata and controls

114 lines (75 loc) · 6.94 KB

Домашнее задание 1.

Тема: Морфология

Дедлайн: среда 30.09.20 23:59

Важное: работы принимаются строго в ipynb (не скрипт, не скрипт в ячейке ipynb)

Данные

Каждый выберет себе свою книгу, которая есть в (условно) открытом доступе на http://lib.ru/ - это и следующее задания будут на материале выбранного текста. Давайте брать не рассказы, а большое произведение (книга) - так будет интереснее.

Задание

Обработать текст книги с помощью морфологического анализатора, сделать поверхностный анализ.

Пункты:

  1. Выбрать и сохранить книгу в .txt. Проследите, что кодировка UTF-8

  2. Обработать книгу с помощью mystem:

    • лемматизировать с помощью mystem
    • замерить время работы на примере небольшого кусочка текста (например, глава) (как замерить время см. ниже)
    • сохранить результат в файл
  3. Обработать книгу через pymorphy

    • токенизировать текст с помощью nltk (см. конспект)
    • разобрать слова с помощью pymorphy
    • замерить время работы (как с майстемом)
    • сохраните результат в jsonlines: каждая строчка - это разбор слова в виде словаря {"lemma": "конь", "word": "коня", "pos": "NOUN"}
  4. Ответить на вопросы:

    • Какую долю слов составляет каждая часть речи? (Например, для глагола - это количество глаголов, деленное на общее число слов в тексте)
    • Найдите топ-20 (по частотности) глаголов и наречий
    • (стоп слова можно убирать, можно и не убирать)

5*. Посмотрите документацию для nltk н-грамм (nltk.bigrams, например), попробуйте составить топ-25 биграмм и триграмм для вашего текста в лемматизированном виде (только леммы, без знаков препинания). Почему получаются именно такие?

Что должно быть при сдаче?

  1. Тетрадка с кодом и ответами на вопросы
  2. Текст книги
  3. файл c результатом работы майстема
  4. JSON с результатом работы пайморфи

Подсказка №1. Используйте %%timeit или %%time для замеров времени (в этот раз именно time). Для этого в начале ячейки, где находится то, что вы хотите замерить, напишите %%time. Например:

%%time

analysis = m.analyze('Вот так можно замерить время')

Подсказка №2. Сохранить в JSON - это подготовить объект питоновский (список словарей или что-то подобное), положить в переменную, а ее отправить в json.dump вместе с файлом, куда вы это сохраните (именно dump, а не dumps). Подробнее см. конспект по JSON.

Подсказка №3. Если у вас не импортируется nltk, попробуйте установить заново, рестартнуть тетрадку, если не работает, то спросите в чате.

Подсказка №4.1 не работает майстем. Если у вас создается объект Mystem(), но ячейка "зависает", то:

  1. запустите разбор на одном предложении в тетрадке
  2. запустите майстем через консоль

Если все ок, то попробуйте еще раз и подождите (может быть, минут 15, если после этого нет результата, то лучше написать нам)

Подсказка №4.2: совсем не работает майстем. Если у вас не работает майстем (невозможно сделать m = Mystem()).

Попробуйте сделать так:

import platform
print(platform.architecture())

import sys
print(sys.platform)

Если это покажет что-то похожее на windows и 32, то у вас 32-битная версия системы и последняя (дефолтная версия) у вас не будет работать. Попробуйте скачать с сайта версию 3.0, где написано 32 и запустить код еще раз. Если и это не работает, то так (путь - это где лежит exe-файл майстема):

import os
os.environ["MYSTEM_BIN"] = "D:\\mystem.exe"

m = Mystem()

или так

m = Mystem(mystem_bin="D:\\mystem.exe")

Если у вас есть вопросы, задавайте в чате или пишите преподавателям

Критерии оценки

Является обязательным оформление домашней работы в jupyter notebook с комментариями и по PEP-8

БаллКритерий
3пункт 2 (с комментарием)
4пункт 3 (с комментарием)
2пункт 4 (с комментарием)
1пункт 5 (с комментарием)

Ссылки на GiHub Classroom:

Группы 1ссылка
Группы 2ссылка
Группа 3ссылка
Группа 4ссылка