Як адкрыць каментары і не патануць у спаме

Як адкрыць каментары і не патануць у спаме

Калі твая праца — ствараць нешта прыгожае, пра яе можна асабліва не расказваць, таму што вынік ва ўсіх перад вачыма. А вось калі ты сціраеш надпісы з платоў, тваю працу ніхто не заўважае, пакуль платы выглядаюць прыстойна ці пакуль ты не сатрэш што-небудзь не тое.

Любы сэрвіс, дзе можна пакінуць каментар, водгук, адправіць паведамленне або загрузіць карцінкі, рана ці позна сутыкаецца з праблемай спаму, махлярства і нецэнзуршчыны. Гэтага не пазбегнуць, але з гэтым трэба дужацца.

Мяне клічуць Міхась, я працую ў камандзе Антыспаму, якая абараняе карыстачоў сэрвісаў Яндэкса ад падобных праблем. Наша праца рэдка бывае прыкметная (і добра!), таму сёння я раскажу пра яе падрабязней. Вы даведаецеся, у якіх выпадках бескарысная мадэрацыя і чаму дакладнасць - не адзіны паказчык яе эфектыўнасці. А яшчэ мы пагаворым пра мацюку на прыкладзе катоў і сабак і пра тое, чаму часам карысна «думаць як мацяршчыннік».

У Яндэксе з'яўляецца ўсё больш сэрвісаў, дзе карыстачы публікуюць свой кантэнт. Можна задаць пытанне ці напісаць адказ у Яндэкс.К'ю, абмеркаваць навіны двара ў Яндэкс.Раёне, падзяліцца дарожным становішчам у размоўчыках на Яндэкс.Картах. Але калі аўдыторыя сэрвісу расце, ён становіцца прывабным для ашуканцаў і спамераў. Яны прыходзяць і запаўняюць каментарыі: прапануюць лёгкі заробак, рэкламуюць цудадзейныя сродкі і абяцаюць сацыяльныя выплаты. З-за спамераў адны карыстачы губляюць грошы, а іншыя - жаданне праводзіць час на недагледжаным, зарослым спамам сэрвісе.

І гэта не адзіная праблема. Мы імкнемся не толькі ахаваць карыстальнікаў ад ашуканцаў, але і стварыць камфортную атмасферу для зносін. Калі людзі ў каментарах сутыкаюцца з мацюкамі і абразамі, яны з вялікай верагоднасцю сыдуць і больш не вернуцца. Значыць, з гэтым таксама трэба ўмець змагацца.

Чысты Вэб

Як гэта ў нас часта бывае, першыя напрацоўкі нарадзіліся ў Пошуку, у той частцы, якая змагаецца са спамам у выдачы. Яшчэ гадоў дзесяць таму там з'явілася задача фільтрацыі дарослага кантэнту для сямейнага пошуку і для запытаў, якія не прадугледжваюць адказы з катэгорыі 18+. Так з'явіліся першыя, уручную набраныя слоўнікі порна і мацюка, іх папаўнялі аналітыкі. Асноўнай задачай была класіфікацыя запытаў на тыя, дзе дапушчальна паказваць дарослы кантэнт і дзе не. Пад гэтую задачу збіралі разметку, будавалі эўрыстыкі, навучалі мадэлі. Так з'явіліся першыя напрацоўкі для фільтрацыі непажаданага кантэнту.

З часам у Яндэксе пачаў з'яўляцца UGC (user generated content) — паведамленні, якія пішуць самі карыстальнікі, а Яндэкс толькі публікуе. Па апісаных вышэй прычынах многія паведамленні нельга было публікаваць не гледзячы - патрабавалася мадэрацыя. Тады вырашылі зрабіць сэрвіс, які б даваў абарону ад спаму і зламыснікаў для ўсіх UGC-прадуктаў Яндэкса і выкарыстоўваў напрацоўкі для фільтрацыі непажаданага кантэнту ў Пошуку. Сэрвіс назвалі "Чысты Вэб".

Новыя задачы і дапамога талакераў

Спачатку ў нас працавала толькі простая аўтаматыка: сэрвісы дасылалі нам тэксты, а мы праганялі на іх слоўнікі мацюка, слоўнікі порна і рэгуляркі - аналітыкі складалі ўсё ўручную. Але сэрвіс з часам ужываўся ва ўсё большай колькасці прадуктаў Яндэкса, і нам прыйшлося вучыцца працаваць з новымі праблемамі.

Часта замест водгуку карыстачы публікуюць бессэнсоўны набор літар, спрабуючы накруціць сабе ачивку, часам рэкламуюць сваю кампанію ў водгуках аб кампаніі канкурэнта, а часам проста блытаюць арганізацыі і ў водгуку пра зоамагазіны пішуць: "Выдатна прыгатаваная рыба!". Магчыма, калі-небудзь штучны інтэлект навучыцца ідэальна ўлоўліваць сэнс любога тэксту, але зараз аўтаматыка часам спраўляецца горш за чалавека.

Стала зразумела, што без ручной разметкі тут не абысціся, і мы прыбудавалі да нашага контуру другую прыступку - адпраўку на ручную праверку чалавекам. Туды пападалі тыя апублікаваныя тэксты, у стаўленні якіх класіфікатар не ўбачыў праблем. Маштабы такой задачы вы можаце сабе лёгка ўявіць, таму мы не толькі паклаліся на асэсараў, але і скарысталіся «мудрасцю натоўпу», гэта значыць звярнуліся па дапамогу да талакераў. Менавіта яны дапамагаюць нам выяўляць тое, што ўпусціла машына, і тым самым навучаюць яе.

Разумнае кэшаванне і LSH-хэшаванне

Яшчэ адна праблема, з якой мы сутыкнуліся пры працы з каментарамі, - спам, а дакладней, яго аб'ёмы і хуткасць распаўсюджвання. Калі аўдыторыя Яндекс.Раёна стала хутка расці, туды прыйшлі спамеры. Яны навучыліся абыходзіць рэгуляркі, злёгку мяняючы тэкст. Спам, вядома ж, усё роўна знаходзілі і выдалялі, але ў маштабах Яндэкса размешчанае нават на 5 хвілін непрымальнае паведамленне маглі ўбачыць сотні чалавек.

Як адкрыць каментары і не патануць у спаме

Нас, вядома ж, гэта не задавальняла, і мы зрабілі разумнае кэшаванне тэкстаў на аснове LSH (locality-sensitive hashing). Працуе гэта так: мы нармалізоўвалі тэкст, выкідвалі з яго спасылкі і рэзалі яго на n-грамы (паслядоўнасці з n літар). Далей лічылі хэшы ад n-грам, а па іх ужо будавалі LSH-вектар дакумента. Сэнс у тым, што падобныя тэксты, нават калі іх крыху змянілі, ператвараліся ў падобныя вектары.

Гэтае рашэнне дазволіла перавыкарыстоўваць вердыкты класіфікатараў і талакераў для падобных тэкстаў. Пры спам-атацы, як толькі першае паведамленне праходзіла праверку і трапляла ў кэш з вердыктам "спам", усе новыя падобныя паведамленні, нават перайначаныя, атрымлівалі той жа вердыкт і выдаляліся аўтаматычна. Пазней мы навучыліся навучаць і аўтаматычна перанавучаць класіфікатары спаму, але гэты "разумны кэш" застаўся з намі і да гэтага часу нас часта выбаўляе.

Класіфікатар добрых тэкстаў

Не паспеўшы перадыхнуць ад дужання са спамам, мы ўсвядомілі, што 95% кантэнту ў нас мадэруецца ўручную: класіфікатары рэагуюць толькі на парушэнні, а большасць тэкстаў добрыя. Мы нагружаем талакераў, якія ў 95 выпадках са 100 ставяць адзнаку «Усё ОК». Прыйшлося заняцца нязвыклай працай - рабіць класіфікатары добрага кантэнту, балазе разметкі за гэты час назапасілася досыць.

Першы класіфікатар выглядаў так: лематызуем тэкст (прыводзім словы да пачатковай формы), выкідаем усе службовыя часціны мовы і ўжываем загадзя нарыхтаваны "слоўнік добрых лем". Калі ў тэксце ўсе словы "добрыя", значыць, і тэкст цалкам не змяшчае парушэнняў. На розных сэрвісах такі падыход адразу даў ад 25 да 35 працэнтаў аўтаматызацыі ручной разметкі. Вядома, такі падыход не ідэальны: нескладана скамбінаваць некалькі нявінных слоў і атрымаць вельмі крыўднае выказванне, але ён дазволіў нам хутка выйсці на добры ўзровень аўтаматызацыі і даў час навучыць больш складаныя мадэлі.

Наступныя версіі класіфікатараў добрых тэкстаў ужо складаліся з і лінейныя мадэлі, і вырашальныя дрэвы, і іх камбінацыі. Для разметкі грубіянстваў і абраз мы, напрыклад, спрабуем нейросетку BERT. Тут важна ўлавіць значэнне слова ў кантэксце і сувязь слоў з розных прапаноў, і BERT нядрэнна спраўляецца з гэтым. (Дарэчы, нядаўна калегі з Навін расказвалі, як ужываюць тэхналогію для нестандартнай задачы - пошуку памылак у загалоўках.) У выніку атрымалася аўтаматызаваць да 90% струменя ў залежнасці ад сэрвісу.

Дакладнасць, паўната і хуткасць

Каб развівацца, трэба разумець, якую карысць прыносяць тыя ці іншыя аўтаматычныя класіфікатары, змены ў іх, а таксама не ці дэградуе якасць ручных праверак. Для гэтага мы прымяняем паказчыкі дакладнасці і паўнаты.

Дакладнасць - гэта доля карэктных вердыктаў сярод усіх вердыктаў аб дрэнным кантэнце. Чым вышэй дакладнасць, тым менш ілжывых спрацоўванняў. Калі не сачыць за дакладнасцю, то ў тэорыі можна выдаліць увесь спам і мацюк, а разам з імі - палову добрых паведамленняў. З іншага боку, калі абапірацца толькі на дакладнасць, то лепшай апынецца тая тэхналогія, якая ўвогуле нікога не ловіць. Таму ёсць яшчэ паказчык паўнаты: доля выяўленага дрэннага кантэнту сярод усяго аб'ёму дрэннага кантэнту. Гэтыя дзве метрыкі ўраўнаважваюць адзін аднаго.

Для вымярэння мы сэмплюем увесь уваходны струмень па кожным сэрвісе і аддаём выбаркі кантэнту асэсарам для экспертнай адзнакі і параўнанні з рашэннямі машыны.

Але ёсьць яшчэ адзін важны паказчык.

Вышэй я пісаў, што непрымальнае паведамленне нават за 5 хвілін могуць убачыць сотні чалавек. Таму мы лічым, колькі разоў мы паспелі паказаць людзям дрэнны кантэнт да таго, як схавалі яго. Гэта важна, таму што недастаткова працаваць якасна - трэба працаваць яшчэ і хутка. І калі мы будавалі абарону ад мацюка, то адчулі гэта ў поўнай меры.

Антымат на прыкладзе котачак і сабачак

Невялікі лірычны адступ. Хтосьці можа сказаць, што нецэнзуршчына і абразы не такія небяспечныя, як шкоднасныя спасылкі, і не так раздражняюць, як спам. Але мы імкнемся падтрымліваць камфортныя ўмовы для зносін мільёнаў карыстачоў, а людзі не кахаюць вяртацца туды, дзе іх абражаюць. Нездарма забарона мацюка і абраз прапісаны ў правілах шматлікіх супольнасцяў, у тым ліку і на Хабре. Але мы адцягнуліся.

Слоўнікі мацюка не спраўляюцца з усім багаццем рускай мовы. Нягледзячы на ​​тое што ёсць усяго чатыры асноўных мацюкальных кораня, з іх можна скласці незлічоную колькасць слоў, якую не зловіш ніякімі рэгуляркамі. Да таго ж можна пісаць транслітам частку слова, замяняць літары падобнымі спалучэннямі, перастаўляць літары, дадаваць зорачкі і т. д. Часам без кантэксту ў прынцыпе нельга вызначыць, што карыстач меў у выглядзе мацюкальнае слова. Мы паважаем правілы Хабра, таму прадэманструем гэта не на жывых прыкладах, а на коціках і сабачках.

Як адкрыць каментары і не патануць у спаме

"Ляў", - сказаў каток. Але мы разумеем, што каток сказаў іншае слова…

Мы сталі думаць пра алгарытмы «невыразнага матчынгу» нашага слоўніка і пра разумнейшы прэпрацэсінг: прыводзілі трансліт, склейвалі прабелы і пунктуацыю, шукалі патэрны і пісалі на іх асобныя рэгуляркі. Такі падыход прыносіў вынікі, але часта змяншаў дакладнасць, не даючы жаданай паўнаты.

Тады мы вырашылі «думаць як мацяршчыннікі». Мы пачалі самі ўносіць шум у дадзеныя: перастаўлялі літары, генеравалі памылкі друку, замянялі літары падобнымі па напісанні і гэтак далей. Пачатковую разметку для гэтага бралі, ужываючы слоўнікі мацюка да вялікіх карпусоў тэкстаў. Калі ўзяць адну прапанову і перакруціць яе некалькімі спосабамі, атрымаецца ўжо шмат прапаноў. Так можна павялічыць навучальную выбарку ў дзясяткі разоў. Заставалася толькі навучыць на атрыманым пуле якую-небудзь больш-менш разумную мадэль, якая ўлічвае кантэкст.

Як адкрыць каментары і не патануць у спаме

Аб фінальным рашэнні пакуль казаць рана. Мы ўсё яшчэ эксперыментуем з падыходамі да гэтай праблемы, але ўжо бачым, што простая знакавая свёрткавая сетка з некалькіх пластоў адчувальна пераўзыходзіць слоўнікі і рэгуляркі: атрымліваецца павялічыць і дакладнасць, і паўнату.

Вядома, мы разумеем, што заўсёды знойдуцца спосабы абыйсці нават самую прасунутую аўтаматыку, асабліва калі справа гэтак азартна: напісаць так, каб дурная машына не зразумела. Тут, як і пры барацьбе са спамам, у нас няма мэты выкараніць саму магчымасць напісаць што-небудзь нецэнзурнае, наша задача - зрабіць так, каб гульня не каштавала свечак.

Адкрыць магчымасць дзяліцца сваім меркаваннем, мець зносіны і каментаваць - няцяжка. Куды складаней дабіцца бяспечных, камфортных умоў і паважлівага стаўлення да людзей. А без гэтага не будзе развіцця любой супольнасці.

Крыніца: habr.com

Дадаць каментар