LINUX.ORG.RU

Проект Нейромодератор

 , ,


6

6

Точнее «нейрокрыса»: т.к. модераторских полномочий у меня нет, я лишь могу сделать скрипты, которые будут отписываться в специальный тред

Тема навеяна Бан без причины (комментарий)

Суть такова: буду пилить набор скриптов для «выявления подозрительных сообщений», обучать буду на текстах с LORа, которые были удалены модераторами.

Когда доделаю попрошу модераторов оценить качество работы сабжа.

На данный момент:

  • скачан архив тредов с января по май 2019;
  • идет первичный анализ данных;
  • идет подготовка к разметке данных.

Проблема: модераторы указывают причины вручную (или не указывают совсем), соответственно:

  • есть сомнения в качестве разметки,
  • текстовую разметку придется превращать в разметку для классификации;

Для решения проблемы сформированы:

Да, разделитель в файлах - точка с запятой.

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

cast @jollheef, @Shaman007, @maxcom

Апдейт 1 (13.06.2019)

По результатам обсуждения тут решил:

  • В качестве положительных примеров брать удаленные модераторам вручную сообщения, для которых указаны нормальные причины а не всякий треш.

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

  • Если данных хватать не будет - добью неудаленными из других топиков.

Пришлось немного переформатировать датасет (датафрейм pandas), т.к. раннее там не было ссылок сообщение-топик.

В эти выходные сделаю обучающую выборку и попробую сделать бинарный классификатор.

Если получится, - на следующей неделе буду пилить нейромодератора нейроябеду.

Апдейт 2 (16.06.2019)

Апдейт 3 (16.06.2019)

Апдейт 4 (16.06.2019)

Апдейт 5 (17.06.2019)

Апдейт 6 (22.06.2019)

Апдейт 7 (22.06.2019)

Апдейт 8 (27.06.2019)

Апдейт 9 (30.06.2019)

Апдейт 10(05.07.2019)

Апдейт 11(14.09.2019)

Апдейт 12(08.12.2019)

Проект на GitHub

Тестовый тред

★★★★★

Последнее исправление: shkolnick-kun (всего исправлений: 18)
Ответ на: комментарий от shkolnick-kun

«выжившие» - это удаленные модераторами посты?

Ты сам знаешь ответ. Или не знаешь? Тогда считай, что я «слился». «Слился» - это такая же метафора, как «выжившие». Успехов.

anonymous
()
Ответ на: комментарий от anonymous

Ты сказать то что хотел своим изначальным постом?

Я посчитал, что это относится к перекосу данных (большое количество пропущенных некорректных сообщений), который не позволит получить работающий классификатор.

По факту оказалось, что перекос есть, но не на столько критический.

Вот если бы вышло, что ROC-AUC около 0.5, тогда да - модераторы принимают решение «левой пяткой» и «мы ничего не можем сказать о том, как выглядят некорректные сообщения на LOR-е».

shkolnick-kun ★★★★★
() автор топика
Ответ на: комментарий от shkolnick-kun

В начале было:

Суть такова: буду пилить набор скриптов для «выявления подозрительных сообщений», обучать буду на текстах с LORа, которые были удалены модераторами.

Потом после «изменения истории» резко меняется:

Апдейт 1 (13.06.2019)
В качестве положительных примеров брать удаленные модераторам вручную сообщения, для которых указаны нормальные причины а не всякий треш.

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

Если данных хватать не будет - добью неудаленными из других топиков.

До «изменения истории» ты мог классифицировать только удаленные сообщения (классифицировать только «выживших»). После - уже начал посматривать в неудаленные (различать «выживших» и «невыживших»).

anonymous
()
Ответ на: комментарий от shkolnick-kun

То есть, ты в начале хотел скачать весь архив сообщений лора, без разницы, удаленные или неудаленные и сделать классификатор «удаленные» и «неудаленные»? Или все таки хотел сделать классификатор «причин удаления» для удаленных, потом «экстраполировать» этот классификатор на любые сообщения?

anonymous
()
Ответ на: комментарий от anonymous

Я хотел сделать:

  • бинарный классификатор «удалить/не удалить»
  • для сообщений под снос:
    • категориальный классификатор,
    • либо несколько бинарных, чтобы теги приделывать
    • модель регрессии - сколько скора снять
shkolnick-kun ★★★★★
() автор топика
Ответ на: комментарий от shkolnick-kun

Повторюсь: в начале хотел обучать на всех сообщениях или только на удаленных?
Пока я вижу, что твой классифиткатор - это помощник модератора, который автоматом ставит причину удаления. Решил модер удалить сообщение, но не может придумать причину, и тут помощник предлагает причину удаления - «qwerty», полученную на основе обучения на неподменных хитрым учителем данных. Думаю, полезная тулза.

anonymous
()
Ответ на: комментарий от anonymous

Бинарный классификатор обучается на:

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

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

Все остальное - на удаленных сообщениях. Обычно это называется цензурирование данных.

shkolnick-kun ★★★★★
() автор топика
Ответ на: комментарий от shkolnick-kun

Бинарный классификатор
(тут была цитата после «изменения истории»)

То есть в начале его не было. А был «помощник модератора» по классификации удаленных сообщений, который был представлен как классификатор любых сообщений. Потом решил чуть подмешать неудаленные сообщения. Не слишком ли сильная «цензура», есть оценка влияния такой «цензуры»? Можно ли оценивать «нормальных» критериями для «ненормальных»?

anonymous
()
Ответ на: комментарий от anonymous

Нет.

Это планировалось с самого начала, но было не понятно, что в данных, и как их размечать.

Если ты глянешь в файл с списком классов, то увидишь колонку «Use», в ней значения 1/0, они использованы для разметки.

shkolnick-kun ★★★★★
() автор топика
Последнее исправление: shkolnick-kun (всего исправлений: 1)
Ответ на: комментарий от ass

В данный момент мне полезно осваивать новые технологии и инструменты.

shkolnick-kun ★★★★★
() автор топика
Ответ на: комментарий от shkolnick-kun

Успехов. Если звезды зажигают, значит, это кому-нибудь нужно? (с) Маяковский

anonymous
()

Тестовое сообщение

Бот зашел в топик и оставил это сообщение…

shkolnick-kun ★★★★★
() автор топика

Hi Ben! It's Danila! I need help!

cast @jollheef, @Shaman007, @maxcom

Господа, поясните за архив…

Реально ли получить удаленные комментарии, если топик перемещен в архив?

Если да, то как?

Кнопки «Показать удаленные комментарии» там нет…

shkolnick-kun ★★★★★
() автор топика
Ответ на: комментарий от shkolnick-kun

Отдай парсер кому-нибудь погонять. (inb4 нейроябида - это приколько, но всем лень, давайте дадим ему модерку на неделю)

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от crutch_master

Я думаю о том, чтобы парсер отдать, но надо понимать, как оно выглядит у модераторов...

shkolnick-kun ★★★★★
() автор топика
Ответ на: комментарий от shkolnick-kun

https://github.com/maxcom/lorsource/blob/master/src/main/webapp/WEB-INF/jsp/v...

Да, там появляется кнопка... Могу отдать парсер модераторам

shkolnick-kun ★★★★★
() автор топика
Последнее исправление: shkolnick-kun (всего исправлений: 2)
Ответ на: комментарий от shkolnick-kun

Могу отдать парсер модераторам

Просто на git его отсыпь и пускай тебе туда же данные PR-ят. Или «организацию» замути, тогда просто данные commit-ить будут.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от ass

Имхо гораздо полезнее потратить время на буругтос.

По-моему, тоже развитие БугуртОС было бы интереснее (но дело хозяйское, конечно).

hobbit ★★★★★
()
Ответ на: комментарий от shkolnick-kun

Есть еще вариант - грязный хак в движок типа

boolean showDeleted = user.moderator || user.nick.equals("shkolnick-kun")

crutch_master ★★★★★
()
Ответ на: комментарий от Deleted

На самом деле там 1 файл на топик, где-то от 4 кб, до 2мб...

shkolnick-kun ★★★★★
() автор топика
Ответ на: комментарий от Shaman007

Выложил текущую версию исходников, включая парсер

Пришлось сменить ЛОРовский пароль, так как старый я ненароком спалил.

Если у кого-то из модераторов есть возможность запустить парсер из под своей учетки и дать мне данные - я был бы весьма признателен.

shkolnick-kun ★★★★★
() автор топика
Ответ на: комментарий от shkolnick-kun

Сканирование тоже работает с SANE из коробки?

«Организацию» надо было бацать и включать в неё модераторов. С PR неудобно (тормозно) всё будет.

Deleted
()
Ответ на: комментарий от Shaman007

У меня такой же

Как и у меня, и у ТС. Может ТС не знает, что на git-е можно «организацию» сбацать, поместить туда репу и созвать в «организацию» участников, чтобы они в репу напрямую коммитили?

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Shaman007

Типа инструкция

  1. Надо положить список url для обхода архива в каталог с парсером (scrap_lor.py).

  2. Создать каталог data/download.

  3. Внести свои учетные данные в lorcfg.py.

  4. Запустить scrap_lor.py, консоль не закрывать либо перенаправить выхлоп в логфайл.

  5. Пару раз в сутки проверять, как работает.

  6. Если вылетел из-за программной ошибки - можно кинуть трейсбэк сюда, любо на гитхаб.

  7. Если ушел в бан - подождать 15 минут и перезапустить.

  8. В конце работы оно сделает self.log_print(‘Done!’)

  9. После этого нужно будет сжать каталог data/download и выложить на какую-нибудь шару в запароленном архиве. Архив будет весить 300-500мб если жать 7zip-ом, в несжатом виде это 3-5Гб данных. Пароль и ссылку на архив - в личку.

shkolnick-kun ★★★★★
() автор топика
Ответ на: комментарий от MrClon

Пока мы будем дампить базу и вычитывать, не сдампили ли лишнего и конвертировать в нужный вид, краулер с убранными таймаутами уже все скачает. Просто подождать до вечера (завтра утром отошлю результат) или подождать до вечера, а вечером работать с базой? Мне больше нравится просто подождать.

Shaman007 ★★★★★
()
Ответ на: комментарий от MrClon

Шаман правильно говорит, время написания и отладки ETL-скрипта будет выше времени работа парсера.

shkolnick-kun ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.