ДЗ №13
Требования к оформлению (за них оценка никогда не опускается более, чем на 2 балла; за них оценка никогда не падает ниже 7 баллов):
- Файл с программой должен называться именно так, как указано в задании
- Во всех программах должны быть содержательные имена переменных
- Во всех программах не должно быть строк длиннее 75 символов, а если такие строки возникли, части таких строк нужно выносить в отдельные переменные или функции.
- Функции должны сопровождаться docstring
- Тело любой функции должно иметь длину не более 10 строк
- Программа не должна содержать (в разумных пределах) дублирования кода
Единственная задача (макс. 10 баллов):
Возьмите два массива маленьких текстов, например новости про политику и новости про искуссство. (Подсказка: например, новости с newsru.com, если их копипастить, можно разбивать split()'ом по символу ":", чтобы получить примерный эквивалент разделения на отедльные новости)
Постройте для них морфологический анализ (например, с помощью mystem -d -n -i -s --format=json --eng-gr in.txt out.txt) (подсказка: соответственно, разбивать текст на части удобнее после mystem, а не до)
- Прочитайте массивы как списки текстов
- В каждом тексте постройте число вхождений каждой части речи
- Постройте таблицу, в которой для каждого предложения для каждой части речи указано количество находок этой части речи в этом предложении
- Присоедините к таблице таблицу векторов tf-idf для этих текстов
Создайте массив длины, равной суммарной длине таблиц, содержащий номер коллекции. (Это будет значение Y для машинного обучения). (подсказка: штука в духе [0]*len(table1) + [1]*len(table2) делает то, что нужно)
Отправьте данные на вход grid_search.GridSearchCV(svm.SVC(), {}) и grid_search.GridSearchCV(naive_bayes.MultinomialNB(), {})
Покажите процент успеха (best_score_)
Возьмите наилучший из получившихся классификаторов (best_estimator_), и с его помощью найдите 3 примера, где машина угадывает, и 3 примера, где машина ошибается