Основы обработки текстов

Спецкурс для студентов и аспирантов ВМК МГУ и ФКН ВШЭ

Напоминаю, в ближайшую среду (ночь со вторника на среду) первый дедлайн. Список студентов, не приступивших к сдаче практикума будет передан в учебную часть.

По многочисленным просьбам, на этой неделе количество попыток увеличено до 15.

В системе тестирования 1 октября произойдет 2 изменения:

  1. Изменился вход для функции train. Теперь в качестве training_corpus будет передаваться тренировочный корпус в виде, как он был в скачиваемом файле:
    training_corpus = json.load(open(path_to_training_corpus))
    

    Необходимо преобразовать корпус во входной формат классификатора самостоятельно. Это даст возможность фильтровать входные данные произвольным образом. Раньше при преобразовании оставались только те значения, которые были одинаково размечены всеми людьми. То есть, если три человека размечало текст и характеристику "Цены" отметили как позитивную только двое, то она не попадала в корпус.

  2. Использовалась F1-мера без параметров. Теперь будет использоваться F1-мера с параметром " average='micro' ". См. документацию scikit-learn.

Внимание! Следующая лекция состоится 1 октября. 17 и 24 сентября лекций не будет!

Немного обновил правила. Изменился формат входных и выходных данных решения.

Выкладываю 5 решений весеннего практикума 2014 года, показавшие лучшие результаты по мере достоверности (accuracy):

Автор Итоговый результат
Константин Безденежных 0.8050847458
Малков Максим 0.7966101695
Гинатулина Светлана 0.7951977401
Александров Никита 0.7881355932
Ульянов Александр 0.7768361582

Также выкладываю baseline 2, который в итоге показал 0.7062146894

Все решения можно скачать по ссылке: solutions.zip

Лекция Слайды
Лекция 1. Задачи обработки текстов lecture1-2013
Лекция 2. Регулярные выражения и конечные автоматы lecture2-2013
Лекция 3. Языковые модели и задача определения частей речи lecture3-2013
Лекция 4. Контекстно-свободные грамматики и синтаксический анализ lecture4-2013
Лекция 5. Статистические методы синтаксического анализа lecture5-2013
Лекция 6. Лексическая семантика lecture6-2013
Лекция 7. Вопросно-ответные системы и автоматическое реферирование lecture7-2013
Лекция 8. Машинный перевод lecture8-2013
Лекция 9. Распределенные методы обработки текстов lecture9_2013

Итак, подходит к концу практикум. Студенты, набравшие 9 и более баллов, получают оценку "отлично".  Все, кто набрал 5-8 баллов получают оценку "хорошо". За 2-4 бала будет выставляться оценка "удовлетворительно".

При желании в течении недели можно улучшить свою оценку, добрав недостающие баллы за счет дополнительной разметки сообщений (1 балл за 100 твитов, соблюдая начальный баланс (50/25/25)). Этим способом  можно изменить только "хорошо" на "отлично" и "удовлетворительно" на "хорошо".

Оценки будут выставляться в среду 14 мая на 1 паре в аудитории 523.

Итоговые результаты:

баллы доп. баллы оценка
Алексиянц Александр Владимирович 14 отлично
Безденежных Константин Вячеславович 39 отлично
Иванишин Владислав Анатольевич 8  1 отлично
Кондратьев Михаил Владимирович 11 отлично
Макаров Александр Евгеньевич 5  4 отлично
Мамонтов Антон Юрьевич 6  3 отлично
Пастух Денис Дмитриевич 3 удовл
Смородин Кирилл Андреевич 17 отлично
Сугаченко Екатерина Алексеевна 20 отлично
Ступин Андрей Андреевич 9 отлично
Татуев Антон Андреевич 5 хорошо
Тишевницкая Полина Николаевна 6 хорошо
Ульянов Александр Дмитриевич 11 отлично
Филипенко Максим Сергеевич 16 отлично
Черников Алексей Анатольевич 8  1 отлично
Шарыгин Евгений Юрьевич 3  2 хорошо
Щевьёва Светлана Михайловна 11 отлично
Ярошевский Денис Всеволодович 4  1 хорошо
Александров Никита Анатольевич 18 отлично
Астахова Дарья Ильинична 7 2 отлично
Борисова Татьяна Сергеевна 8 1 отлично
Буланов Артём Андреевич 14 2 отлично
Гинатулина Светлана Игоревна 16 отлично
Димитриев Станислав Олегович 0 неуд
Ермичев Александр Александрович 8  1 отлично
Захаров Дмитрий Александрович 5  4 отлично
Коноркин Иван Олегович 2 удовл
Косолапов Кирилл Александрович 8  1 отлично
Мальков Максим Петрович 37 отлично
Пузров Глеб Владимирович 3 удовл
Сукманова Дарья Александровна 10 отлично
Шалаев Михаил Михайлович 2 3 хорошо

С 20.00 пятницы 14 марта до 10.30 понедельника 17 марта будут отключены все серверы в связи с техническими работами в ИСП РАН. Задания в это время сдавать не получится.

По просьбам присутствовавших сегодня на семинаре, выкладываю шаблон класса SentimentAnalyzer.py. В последней строчке написано как из этого шаблона получить Baseline_1.

class SentimentAnalyzer:
    #constructor (optional)
    def __init__(self):
        None

    #trainer of classifier (mandatory)
    def train(self, training_corpus):
        # train your classifier here
        self.classifier = None

    #returns sentiment score of input text (mandatory)
    def getClasses(self, texts):
        #Write your code instead of next line
        return ['neutral' for iter in texts] # Baseline 1

Внимание, чтобы была возможность самостоятельно фильтровать данные, на вход функции train() подается тренировочный корпус в формате json, полученный примерно так:

training_corpus = json.load(open(path_to_training_corpus))

Сдать экзамен или поставить полученную оценку в зачетку/ведомость можно приехав в ИСП РАН. Перед этим рекомендую написать мне письмо и договориться о времени. В университете я буду скорее всего только в январе.

Денис.