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