Дедлайн: 26 марта 23:59.
Перед вами в gold_standard.csv gold разметка некоторых предложений из Universal Dependencies. А в words.lexd содержатся разборы почти всех слов из этих предложений (некоторым словам соответствует несколько разборов).
1. Получите разбор предложений, используя words.lexd, сохраните в файл analysis_01.txt (0,5 балла).
2. Посчитайте метрики качества
- покрытие (0,5 балла)
- точность (0,5 балла)
- полноту (0,5 балла)
- f1-меру (0,5 балла)
3. Посчитайте метрики качества с удалением эффекта частотности (при котором каждая пара токен-полный_разбор в gold разметке учитывается только один раз) (2 балла)
4. Напишите правила для снятия омонимии слова "дали". Сохраните в файл Surname_hw5_04.cg3. (при разрешении всех случаев - 3 балла, возможен частичный)
5. Посчитайте метрики качества заново
- для всех слов (0,25 балла)
- для уникальных слов (с удалением эффекта частотности) (0,25 балла)
6. Задание на 9-10: улучшите качество разбора, разрешив оставшиеся случаи омонимии
- другие
- ее
- и
- прошлого
- слова
- стены
- этот
Допишите правила в файл из пункта 4 и сохраните в Surname_hw5_06.cg3.
Surname_hw5_04.cg3Surname_hw5.ipynb/Surname_hw5.shсо всеми шагами и комментариями- *
Surname_hw5_06.cg3
- Для подсчёта метрик вы можете использовать код из семинара Python, R (они дают немного разные результаты), а можете написать его самостоятельно, но тогда необходимо прокомментировать, чем ваш подход отличается от предложенного. При наличии разумных объяснений несовпадение с ожидаемым ответом не считается ошибкой.
- Для пункта 3 поправьте код самостоятельно. Если в gold-разметке текст
Пила-NOUN не-PART пила-VERB сок-NOUN ,-PUNCT она-PRON ж-PART пила-NOUN, то мы считаем, что в корпусе 7 уникальных пар (токен-разбор):
- пила-NOUN (регистр не учитываем)
- не-PART
- пила-VERB
- сок-NOUN
- ,-PUNCT
- она-PRON
- ж-PART
Покрытие: если пара один раз разбирается, а в другой раз не разбирается, покрытие неполное. Если разбор Пила-NOUN не-PART пила-VERB сок-NOUN ,-PUNCT она-PRON ж-PART *пила, то покрытие "пила-NOUN" 0.5, а итоговое значение метрики - 6.5/7≈0.929
Precision, Recall, F1-мера: смотрим все случаи разбора каждой пары. Если пила-NOUN один раз разбирается верно, а в другой раз предлагается один неверный разбор, то precision по этому слову 1/2=0.5.
Если вы используете код на питоне из семинара, у вас в пункте 2 должны получиться такие результаты
Покрытие 1: 0.9955947136563876
Основы 1
{'mean_precision': 0.9537444933920705, 'mean_recall': 0.9955947136563876, 'mean_f1': 0.9647577092511013, 'fin_precision': 0.9149797570850202, 'fin_recall': 0.9955947136563876, 'fin_f1': 0.9535864978902954}
Части речи 1
{'mean_precision': 0.9427312775330396, 'mean_recall': 0.9955947136563876, 'mean_f1': 0.9574155653450808, 'fin_precision': 0.8968253968253969, 'fin_recall': 0.9955947136563876, 'fin_f1': 0.9436325678496869}
Теги 1
{'mean_precision': 0.9177679882525698, 'mean_recall': 0.9955947136563876, 'mean_f1': 0.9336270190895741, 'fin_precision': 0.7874564459930313, 'fin_recall': 0.9955947136563876, 'fin_f1': 0.8793774319066148}
Разборы целиком 1
{'mean_precision': 0.906754772393539, 'mean_recall': 0.9955947136563876, 'mean_f1': 0.9262848751835536, 'fin_precision': 0.773972602739726, 'fin_recall': 0.9955947136563876, 'fin_f1': 0.8709055876685935}
А в 3 задании ожидаются такие (если используете предложенную логику):
Покрытие 2: 0.9936708860759493
Основы 2
{'mean_precision': 0.9715189873417721, 'mean_recall': 0.9936708860759493, 'mean_f1': 0.9746835443037974, 'fin_precision': 0.9457831325301205, 'fin_recall': 0.9936708860759493, 'fin_f1': 0.9691358024691358}
Части речи 2
{'mean_precision': 0.9651898734177216, 'mean_recall': 0.9936708860759493, 'mean_f1': 0.9704641350210971, 'fin_precision': 0.9345238095238095, 'fin_recall': 0.9936708860759493, 'fin_f1': 0.9631901840490797}
Теги 2:
{'mean_precision': 0.9367088607594937, 'mean_recall': 0.9936708860759493, 'mean_f1': 0.9478902953586499, 'fin_precision': 0.8486486486486486, 'fin_recall': 0.9936708860759493, 'fin_f1': 0.9154518950437318}
Разборы целиком 2:
{'mean_precision': 0.930379746835443, 'mean_recall': 0.9936708860759493, 'mean_f1': 0.9436708860759493, 'fin_precision': 0.839572192513369, 'fin_recall': 0.9936708860759493, 'fin_f1': 0.9101449275362319}
Если вы считаете, что другой способ разумнее, сделайте по-другому и объясните в комментарии принцип.
- Проверьте, что после снятия омонии у вас улучшилась точность и не ухудшилась полнота.