Pull to refresh
90
0
Илья Гусев @Takagi

Программист

Send message

Концепт красивый, но в варианте быстрой постмодерации действительно есть вот эта проблема:

пока человек обработает такой отзыв – новость уйдёт из выдачи

Плюс не только новость уйдёт, но и сама выжимка может за это время исправиться/испортиться. Короче сложно с модерацией.

Остаются системные изменения алгоритма. Условно, взяли пачку жалоб за месяц; подкрутили гиперпараметры; посмотрели, сколько жалоб исправлено и не сломалось ли в остальных местах. Вот так это сейчас и работает.

Погодите. Каким образом тот факт, что отзывы могут писать любые люди, а не профи, делает их разбор сложнее?

Опечатки, оборванные фразы, другая лексика. Появляются проблемы уже на уровне разбиения на предложения.

выжимка делается из одной статьи

Не совсем так, выжимка делается из нескольких статей, но про одно событие.

надо, чтобы в статье фигурировало несколько противоположных утверждений (например, цитаты из мнений разных сторон конфликта), алгоритм выхватил именно их и склеил. Понятно, что тут это будет случаться не так часто.

Всё верно, и такое случалось на моей памяти. Если кластеризация ошиблась, то статьи могут быть про разные события, и в этом случае выжимка может быть не самосогласована. Но это всё ещё редкое явление, много факторов должно сойтись.

А в каких-то источниках есть семантическая разметка, позволяющая не играть в ИИ, а взять выделенный автором фрагмент текста? Если да – это используется?

У некоторых источников есть "description" HTML-тег, в которым лежит аннотация. Но их не очень много, и не все они хорошего качества, поэтому мы их не используем.

Есть кнопка, позволяющая быстро указать, что алгоритм ошибся? Или это не имеет смысла, пока человек обработает такой отзыв – новость уйдёт из выдачи?

Отдельной кнопки нет, и скорее всего не будет. У нас был долгий заход с опросами по качеству разных компонент сервиса, но люди часто тыкают в кнопки, если им не нравится сама новость, и получается очень шумно. Как и с любыми другими ошибками можно написать в поддержку, и это обычно работает.

Выжимки модерировались примерно в течение месяца после запуска в прод, сейчас уже нет.

Во-первых это дорого. Новости обновляются примерно раз в 3-4 минуты, выжимки перестраиваются примерно с такой же частотой. Каждый раз их переотправлять в Толоку или Янг - это огромный объём разметки, даже если кэшировать вердикты по отдельным предложениям. Плюс real-time разметка всегда сложна: толокерам нужно успевать за условные 1-2 минуты разметить несколько выжимок.

Во-вторых это всё-таки экстрактивная суммаризация из профессиональных источников, в отличие от UGC отзывов, которые могут писать любые люди. Поэтому бреда в наших выжимках на порядки меньше. В статье есть график "плохих" выжимок, так даже среди них явного бреда практически нет.

Игрался с моделью ещё после прошлой статьи, потребовалась некоторая модификация исходных скриптов, чтобы она хорошо работала. В частности, выпиливание лишних токенов: html-разметки, ссылок, странных пробелов и переносов строк. Зато после этого стало прекрасно. Если кому-то интересно, вот ноутбук: colab.research.google.com/drive/1r5ufZF9SZPowAs0K8pQzESIjbcb1WTMd

Там генератор гороскопов, биографий людей по имени и фамилии, и поздравлений с ДР.
Пример гороскопа:

Гороскоп на завтра, 2 ноября 2020 года.

ОВЕН
Время с 21:40 до 23:30 может стать для вас очень трудным, но в конце концов, вы обязательно выйдите из него победителем, несмотря на все трудности. Не позволяйте мелочам мешать вашей внутренней гармонии. В этот день будут возникать ситуации, которые поставят вашу жизнь перед новыми перспективами.

ТЕЛЕЦ
В этот день не исключены мелкие неприятности. Но благодаря вашему упорству и напору они обязательно пройдут. Будьте внимательны, старайтесь выбирать друзей, которые смогут помочь вам справиться с проблемами. Также в этот день не забудьте принять ванну. И не пейте много спиртного. Этот день очень полезен для зачатия. В это время особенно полезны любые контрацептивы.

БЛИЗНЕЦЫ
В этот день вам удастся добиться того, к чему вы стремились много лет, но сегодня, благодаря новым возможностям и новым возможностям ваших друзей и близких, ваше дело должно наконец сдвинуться с мертвой точки. Не стоит тратить на это слишком много сил, но и слишком медленно двигаться тоже не следует. Постарайтесь воспользоваться представившимися возможностями и не упускать их.



Не вижу ничего страшного. Наоборот, будет хорошо, если все примерно с одинаковых позиций начнут второй тур, раз уж он открыт для всех. Я только обрадуюсь, если кто-то обгонит нас с нашим же кодом в качестве основы, это тоже своего рода признание мастерства.
Статистика о просмотрах/кликах/форвардах Instant View у них определённо есть. Другое дело, что сам по себе это не совсем честный сигнал популярности статьи, потому что он сильно зависит от способов и каналов распространения, то есть большие каналы автоматически будут выше по нему ранжироваться.

А что касается источников, так нет ничего читерного в том, чтобы использовать хост как одну из фич. Главное в будущее при этом не подглядывать :)
Основная модель училась на ГИКРЯ, конкретно на этих данных: https://github.com/dialogue-evaluation/morphoRuEval-2017/blob/master/GIKRYA_texts_new.zip. Причём из архива я использовал для обучения и train, и test часть, потом разбивал получившийся набор на train и val в соотношении 9:1. В качестве тестовой выборки использовал тестовую выборку соревнования.

Пробовал дообучиться на СинТагРусе, лучше не стало. НКРЯ и OpenCorpora не пробовал.
С mystem не так-то просто сравниться. Проблема в том, что на всех тестах, которые использовались в MorphoRuEval-2017, mystem точно проиграет, но это ничего не скажет о качестве его разбора. Это происходит из-за того, что его нельзя дообучить, а разметки разных корпусов сильно отличаются из-за того самого отсутствия стандартизации. Вообще практически любой парсер без дообучения заведомо проиграет.

Кроме того, тут во всей красе присутствует проблема разных наборов тегов. Придётся конвертировать из UD в mystem'овский формат или обратно, а это неустранимые потери точности.

Если сравниваться, то надо сравниваться на его поле. Его полем, видимо, можно считать НКРЯ, но я пока на нём не считал точность. Возможно, стоит посчитать.

С практической точки зрения mystem на порядок, а может и на несколько порядков быстрее моего парсера. Если скорость не так критична, то в качестве замены мой парсер вполне может подойти.
Прошу прощения, я измерял на UD 1.4 SyntagRus, а не на UD 2.0. Но это даже нагляднее :)
Напрямую — к сожалению, нет. Хотя стоило бы.

Есть косвенные данные. В одной из статей с MorphoRuEval-2017 есть сравнение с SyntaxNet'ом на UD 1.3 SyntagRus. Приведённая в этой статье модель побивает SyntaxNet. У SyntaxNet'а, согласно статье, 94% точности на полных грамматических значениях. А моя модель побивает модель из статьи на тестах MorphoRuEval-2017.
Кроме того, я измерял качество на UD 2.0 SyntagRus. У меня там было около 94.5%.

Но для полной уверенности надо всё ещё замерять.
Да, я думал о том, чтобы попробовать использовать признаки на основе WordNet'ов, это может быть интересно.
Да, именно так. Парсер обучался именно на предложениях, вероятно общий контекст сможет помочь разрешению омонимии в некоторых случаях.
Но даже на уровне предложений, 5% ошибок — это довольно много, вообще говоря. Я сейчас распарсил «Регулярно мой стол» и получил, что парсер считает «мой» местоимением, причём с довольно высокой вероятностью. С некоторыми ухищрениями и подсказками («Мой и чисти свой стол регулярно», например) вероятность того, что это глагол, удалось довести до 5%. Есть предположение, что формы повелительного наклонения в обучающей выборке не очень часто встречались.
А как направление развития учёт общего контекста — отличная идея. А ещё в конкретно моей реализации нет никакого семантического уровня. В реализации Дани это худо-бедно могут обеспечить словные эмбеддинги.
А вот тут уже без общего контекста никак не обойтись. Например, вещи типа «Регулярно мой стол» и «Мой стол очень красивый» ещё разделяются, а если это предложение «Мой стол», то на этом уровне это неразрешимо.
Частично это решается тем, что парсер всё ещё может возвращать вероятности разных классов, то есть мы оставляем неодназначность и предлагаем её разрешить системам, которые находятся на уровень выше.
В случае с «какать» нам очень сильно может помочь пунктуация.

Information

Rating
Does not participate
Location
Amsterdam, Noord-Holland, Нидерланды
Date of birth
Registered
Activity