(Бу мәкалә 2003 елгы Спэм конференциясендә доклад сыйфатында укылды. Анда «Спэм өчен план»да тасвирланган алгоритмның нәтиҗәлелеген арттыру өчен башкарган эшем һәм киләчәктә ниләр эшләргә ниятләвем тасвирлана.)
Монда тәкъдим итәсе килгән беренче ачышым — фәнни мәкаләләрне ялкау бәяләү алгоритмы. Үзегез теләгән нәрсәне языгыз да бернинди элеккеге хезмәтләргә сылтамагыз, шул чакта ачуланган укучылар сез сылтарга тиеш булган бөтен мәкаләләрне үзегезгә җибәрәчәк. Мин бу алгоритмны «Спэм өчен план» [1] Slashdot сайтына эләккәч ачтым.
Спэм фильтрлау — яхшы үскән өлкә булган текст классификациясенең бер өлеше, ләкин Байес спэм фильтрлавының үзенә багышланган беренче мәкаләләр бер үк конференциядә 1998 елда тәкъдим ителгән ике хезмәт булды булса кирәк: берсе Пантел белән Линныкы [2], икенчесе Microsoft Research төркеменнән [3].
Бу эш турында ишеткәч, мин бераз гаҗәпләндем. Әгәр кешеләр Байес фильтрлау белән дүрт ел элек үк шөгыльләнә башлаган булса, нигә аны һәркем кулланмый иде соң? Мәкаләләрне укыгач, мин моның сәбәбен аңладым. Пантел белән Линның фильтры ике арасында нәтиҗәлерәге иде, ләкин ул спэмның бары 92%ын гына тотты һәм ялган уңай нәтиҗәләр (ягъни ялгыш тоткарлау) 1,16% тәшкил итте.
Мин үзем Байес спэм фильтрын язып карагач, ул 99,5% спэмны тотты һәм ялган уңай нәтиҗәләр 0,03%тан да кимрәк булды [4]. Бер үк экспериментны үткәргән ике кеше кискен аерылучы нәтиҗәләр алганда, бу һәрвакыт борчу тудыра. Бу очракта ул аеруча борчулы, чөнки бу ике сан төркеме капма-каршы нәтиҗәләргә китерергә мөмкин. Төрле кулланучыларның таләпләре төрле, ләкин күп кешеләр өчен 1,16% ялган уңай нәтиҗә белән 92% фильтрлау дәрәҗәсе фильтрлауның яраклы чишелеш булмавын аңлата, ә 0,03%тан кимрәк ялган нәтиҗә белән 99,5% — аның нәкъ менә чишелеш булуын аңлата дип уйлыйм.
Ни өчен без бөтенләй төрле саннар алдык соң? Мин Пантел белән Линның нәтиҗәләрен кабатларга тырышмадым, ләкин мәкаләне укыганнан соң, аерманы аңлатучы биш сәбәпне күрәм.
Беренчесе — алар фильтрны бик аз мәгълүматта өйрәткәннәр: 160 спэм һәм 466 спэм булмаган хат. Мондый кечкенә мәгълүмат җыелмалары белән фильтрның нәтиҗәлелеге һаман да үсәргә тиеш иде. Шуңа күрә аларның саннары, гомумән Байес фильтрлавы турында әйтмичә дә, хәтта үз алгоритмнарының нәтиҗәлелеген дә төгәл үлчәү булмаска мөмкин.
Ләкин иң мөһим аерма, мөгаен, аларның хат башламнарын (headers) санга сукмавындадыр. Спэм фильтрлары өстендә эшләгән теләсә кем өчен бу тиле карар булып күренәчәк. Шулай да мин язарга тырышкан иң беренче фильтрларда мин дә башламнарны игътибарсыз калдырдым. Нигә? Чөнки мин проблеманы гади һәм чиста килеш сакларга теләдем. Ул вакытта мин почта башламнары турында күп белми идем, һәм алар миңа очраклы чүп-чар белән тулы кебек тоелды. Фильтр язучылар өчен монда бер сабак бар: мәгълүматны санга сукмый калмагыз. Бу сабак искә төшерергә дә кирәкмәслек ачык булып күренер, ләкин миңа аны берничә тапкыр үз тәҗрибәмдә өйрәнергә туры килде.
Өченчедән, Пантел белән Лин токеннарның нигезен аерган (стемминг ясаган), ягъни, мәсәлән, «mailing» һәм «mailed» сүзләрен «mail» тамырына кадәр кыскартканнар. Корпусларының кечкенә булуы аларны шулай эшләргә мәҗбүр иткәндер бәлки, ләкин алай булса, бу — вакытыннан алда оптимизациянең бер төре.
Дүртенчедән, алар ихтималлыкны башкача исәпләгәннәр. Алар барлык токеннарны кулланган, ә мин иң мөһим 15не генә кулланам. Барлык токеннарны куллансагыз, озынрак спэмнарны күрми калу ихтималы зур — кемдер күпбаскычлы маркетинг схемасында баеп киткәнче үз тормыш тарихын сөйли торган хатлар кебек. Һәм мондый алгоритмны спэм җибәрүчеләргә алдавы җиңел булыр иде: спэм сүзләрен тигезләү өчен очраклы текстның зур өлешен өстәү дә җитә.
Ниһаять, алар ялган уңай нәтиҗәләргә каршы кыйшайту (bias) ясамаганнар. Минемчә, теләсә кайсы спэм фильтрлау алгоритмында фильтрлау сыйфаты исәбенә ялган уңай нәтиҗәләр санын киметү өчен борып була торган уңайлы бер тоткыч булырга тиеш. Мин моны спэм булмаган корпустагы токеннар очрашуын икеләтә исәпләп башкарам.
Мин спэм фильтрлауга гади текст классификациясе проблемасы итеп кенә карарга ярамый дип уйлыйм. Текст классификациясе алымнарын кулланырга була, ләкин чишелешләр текстның электрон хат булуын һәм аеруча спэм булуын исәпкә алырга тиеш. Электрон хат — бары тик текст кына түгел, аның структурасы бар. Спэм фильтрлау — гади классификация генә түгел, чөнки ялган уңай нәтиҗәләр (хатаны спэм дип ялгыш табу) ялган тискәре нәтиҗәләргә (спэмны күрми калуга) караганда күпкә начаррак, сез аларга хатаның бөтенләй башка төре дип карарга тиешсез. Һәм хатаның чыганагы очраклы тирбәнеш кенә түгел, ә фильтрыгызны җиңәргә актив омтылучы тере кеше — спэм җибәрүче үзе.
Токеннар
Slashdot мәкаләсеннән соң ишеткән тагын бер проект Билл Йеразюнисның (Bill Yerazunis) CRM114 проекты иде [5]. Бу — мин яңа гына телгә алган дизайн принцибына капма-каршы мисал. Бу турыдан-туры текст классификаторы, ләкин шулкадәр гаҗәеп нәтиҗәле ки, ул нәкъ менә шуны эшләгәнен белмичә дә спэмны диярлек камил дәрәҗәдә фильтрлый ала.
CRM114-ның ничек эшләгәнен аңлагач, аерым сүзләргә нигезләнгән фильтрлаудан шундыйрак алымга күчү иртәме-соңмы котылгысыз булачак кебек тоелды. Ләкин иң элек мин аерым сүзләр белән никадәр алга китеп булганын күрергә булдым. Һәм җавап гаҗәпләндерерлек дәрәҗәдә өметле булып чыкты.
Барыннан да элек мин акыллырак токенизация өстендә эшләдем. Хәзерге заман спэмында мин CRM114 күрсәткечләренә якыная торган фильтрлау дәрәҗәсенә ирешә алдым. Бу алымнар күбесенчә Биллныкына перпендикуляр (бәйсез); оптималь чишелеш икесен дә берләштерә ала.
«Спэм өчен план» токенның бик гади билгеләмәсен куллана. Хәрефләр, цифрлар, сызыкчалар, апострофлар һәм доллар билгеләре состав өлеше булган символлар санала, ә калган барысы да токен бүлүчеләр булып тора. Мин шулай ук регистрны да (юл һәм баш хәрефләрне) санга сукмадым.
Хәзер миндә токенның катлаулырак билгеләмәсе бар: Хәреф регистры саклана.
Өндәү билгеләре состав төзүче символлар булып тора.
Нокталар һәм өтерләр ике цифр арасында очраса, состав төзүче булып кала. Бу миңа IP адресларны һәм бәяләрне бөтен килеш алырга мөмкинлек бирә.
$20-25 кебек бәя диапазоны ике токен бирә: $20 һәм $25.
To, From, Subject һәм Return-Path юлларында яки URL эчендә очрый торган токеннар тиешенчә билгеләнә. Мәсәлән, Subject юлындагы «foo» токеннары «Subject*foo» булып китә. (Йолдызчык урынына сез токенда рөхсәт итмәгән теләсә нинди символ була ала.) Мондый чаралар фильтрның сүзлеген арттыра, бу исә аны сизгеррәк итә. Мәсәлән, хәзерге фильтрда Subject юлындагы «free» сүзенең спэм булу ихтималлыгы 98% тәшкил итә, ә хатның төп текстындагы шул ук токенның спэм ихтималлыгы бары 65% кына.
Менә хәзерге ихтималлыкларның кайберләре [6]:
Subject*FREE 0.9999 free!! 0.9999 To*free 0.9998 Subject*free 0.9782 free! 0.9199 Free 0.9198 Url*free 0.9091 FREE 0.8747 From*free 0.7636 free 0.6546 «Спэм өчен план» фильтрында бу бөтен токеннарның ихтималлыгы бер үк булыр иде: 0.7602. Ул фильтр якынча 23 000 токенны таный иде. Хәзергесе якынча 187 000 токенны таный.
Токеннар дөньясы зуррак булуның тискәре ягы — хатаны танымый калу ихтималы арта. Корпусыгызны күбрәк санлы токеннарга тарату аны кечерәйтү белән бер үк эффект бирә. Әгәр сез өндәү билгеләрен токенның бер өлеше дип санасагыз, мәсәлән, җиде өндәү билгесе булган «free» өчен кулыгызда спэм ихтималлыгы бөтенләй булмаска мөмкин, гәрчә ике генә өндәү билгесе булган «free» өчен ихтималлыкның 99,99% икәнен белсәгез дә.
Моңа бер чишелеш — мин дегенерация (гадиләштерү) дип атаган ысул. Токен өчен төгәл туры килүне таба алмасагыз, аңа кимрәк үзенчәлекле вариант буларак карагыз. Соңгы өндәү билгеләрен, баш хәрефләрне һәм билгеләнгән биш контекстның берсендә булуны мин токенны үзенчәлеклерәк итүче факторлар дип саныйм. Мәсәлән, «Subject*free!» өчен ихтималлык тапмасам, мин «Subject*free», «free!» һәм «free» ихтималлыкларын эзлим һәм 0,5 тән иң ерак торганын алам.
Фильтр Subject юлында «FREE!!!» күреп, аның өчен ихтималлык таба алмаган очракта карала торган вариантлар [7] менә шулар:
Subject*Free!!! Subject*free!!! Subject*FREE! Subject*Free! Subject*free! Subject*FREE Subject*Free Subject*free FREE!!! Free!!! free!!! FREE! Free! free! FREE Free free Әгәр сез моны эшләсәгез, баш хәреф белән башланган вариантларны да, тулысынча баш хәрефтән һәм тулысынча юл хәрефләреннән торганнары кебек үк исәпкә алыгыз. Спэмнарда боерык фигыльле җөмләләр күбрәк була, һәм аларда беренче сүз — фигыль. Шуңа күрә баш хәреф белән башланган фигыльләрнең спэм ихтималлыгы бары тик юл хәрефе белән язылганнарга караганда югарырак. Минем фильтрда «Act»ның спэм ихтималлыгы — 98%, ә «act» өчен — бары 62% кына.
Фильтрның сүзлеген арттырсагыз, элеккеге «бер үк» төшенчәгез буенча бер үк сүзне берничә тапкыр саный башларга мөмкинсез. Логик яктан караганда, алар бүтән бер үк токен түгел. Ләкин бу барыбер сезне борчый икән, тәҗрибәмнән чыгып шуны әйтә алам: сез берничә тапкыр саный торган булып күренгән сүзләр нәкъ менә сез санарга теләгән сүзләр булып чыга.
Сүзлекнең зуррак булуының тагын бер эффекты: килгән хатка караганда, сез кызыклырак токеннарны күбрәк табасыз, ягъни ихтималлыгы 0,5 тән ерак булганнарны. Мин хатның спэм булу-булмавын хәл итү өчен иң кызыклы 15не кулланам. Ләкин мондый тотрыклы санны кулланганда кыенлыкка очрарга мөмкин. Бик күп максималь кызыклы токеннар тапсагыз, нәтиҗә тигез дәрәҗәдә кызыклы токеннарны тәртипкә салучы очраклы факторга бәйле булып калырга мөмкин. Моны чишүнең бер юлы — кайберләренә башкаларга караганда кызыклырак дип карау.
Мәсәлән, «dalco» токеннары минем спэм корпусында 3 тапкыр очрый һәм гадәти хатлар корпусында беркайчан да очрамый. «Url*optmails» токеннары (URL эчендәге «optmails») 1223 тапкыр очрый. Шулай да, мин элек токеннар өчен ихтималлык исәпләгән ысул буенча, икесендә дә бер үк спэм ихтималлыгы — 0,99 бусагасы булыр иде.
Бу дөрес кебек тоелмый. Бу ике токенга шактый аерыла торган ихтималлыклар бирү өчен теоретик дәлилләр бар (Пантел белән Лин шулай итә), ләкин мин моны әле сынап карамадым. Бер яки икенче корпуста гына очрый торган 15тән артык токен тапсак, ким дигәндә еш очрый торганнарына өстенлек бирергә тиешбез кебек. Шуңа күрә хәзер ике бусага кыйммәте бар. Спэм корпусында гына очрый торган токеннар өчен, әгәр алар 10 тапкырдан артык очраса, ихтималлык 0,9999, кире очракта — 0,9998 тәшкил итә. Гадәти хатлар корпусында гына табылган токеннар өчен шкаланың икенче башында да нәкъ шулай ук.
Бәлки соңрак мин токен ихтималлыкларын ныграк масштаблармын, ләкин хәтта бу кечкенә генә масштаблау да токеннарның дөрес тәртиптә тезелүен тәэмин итә.
Тагын бер мөмкинлек — 15 токенны гына түгел, билгеле бер кызыксыну бусагасыннан арткан барлык токеннарны исәпкә алу булыр иде. Стивен Хаузер үзенең статистик спэм фильтрында шулай итә [8]. Әгәр сез бусага куллансагыз, аны бик югары итегез, югыйсә спэм җибәрүчеләр хатларны зарарсыз сүзләр белән тутырып сезне алдый алачак.
Ниһаять, HTML белән нишләргә? Мин бөтен вариантларны да сынап карадым: аны бөтенләй санга сукмаудан башлап тулысынча анализлауга кадәр. HTML-ны игътибарсыз калдыру — начар фикер, чөнки ул файдалы спэм билгеләре белән тулы. Ләкин барысын да анализласагыз, фильтрыгыз гади генә HTML танучыга әйләнеп деградацияләнергә мөмкин. Иң нәтиҗәле алым урталыкны сайлау булып тора: кайбер токеннарны күрү, ә кайберләрен күрмәү. Мин a, img һәм font тегларына карыйм, калганнарын санга сукмыйм. Сылтамаларга һәм рәсемнәргә һичшиксез карарга кирәк, чөнки аларда URL-лар бар.
HTML белән эш итүдә тагын да акыллырак булырга мөмкин идем, ләкин моңа күп вакыт сарыф итүнең кирәге юк дип уйлыйм. HTML белән тулы спэмнарны фильтрлау җиңел. Хәйләкәррәк спэмчылар аннан инде кача башладылар. Шуңа күрә киләчәктә нәтиҗәлелек сезнең HTML белән ничек эшләвегезгә артык бәйле булмаячак.
Нәтиҗәлелек
2002 елның 10 декабреннән 2003 елның 10 гыйнварына кадәр мин якынча 1750 спэм алдым. Шуларның 4се үтеп китте. Бу — якынча 99,75% фильтрлау дәрәҗәсе.
Мин күрми калган дүрт спэмның икесе үтте, чөнки аларда минем чын хатларымда еш очрый торган сүзләр кулланылган иде.
Өченчесе — өченче затларга хат җибәрү өчен сакланмаган cgi-скриптны кулланган хатларның берсе иде. Аларны бары тик эчтәлеккә карап кына фильтрлау кыен, чөнки башламнары зарарсыз күренә һәм сүзләрне бик сакланып сайлыйлар. Шулай да мин гадәттә аларны тота алам. Бусы 0,88 ихтималлык белән, 0,9 бусагасыннан чак кына калышып үтеп китте.
Әлбәттә, берничә токеннан торган эзлеклелекләргә карау аны җиңел генә тотар иде. «Түбәндә сезнең кире элемтә формасының нәтиҗәсе» дигән гыйбарә аны шундук фаш итә.
Дүртенче спэм мин «киләчәк спэмы» дип атаган төргә керә иде, чөнки спэмның шундый формага әверелүен көтәм: тулысынча нейтраль текст, ә артыннан URL. Бу очракта хат кемнәндер килгән иде: ул үзенең сәхифәсен эшләп бетерүен һәм минем аңа кереп каравымны сораган. (Бит, әлбәттә, порносайт рекламасы булып чыкты.)
Әгәр спэм җибәрүчеләр башламнарда сак булса һәм яңа URL кулланса, фильтрлар игътибар итәрлек бернәрсә дә булмый мондый киләчәк спэмында. Без, әлбәттә, сәхифәне карап чыгу өчен краулер (робот) җибәреп каршы тора алабыз. Ләкин бу кирәкмәскә дә мөмкин. Киләчәк спэмына җавап бирү дәрәҗәсе түбән булырга тиеш, югыйсә һәркем шулай итәр иде. Әгәр ул җитәрлек дәрәҗәдә түбән булса, спэм җибәрүчеләргә аны тарату акланмаячак, һәм безгә аны фильтрлау өстендә бик нык баш катырырга туры килмәячәк.
Ә хәзер чыннан да тетрәндергеч яңалык: шул бер айлык чорда мин өч ялган уңай нәтиҗә алдым.
Бер караганда, берничә ялган уңай нәтиҗә алу — җиңеллек бирә торган хәл. «Спэм өчен план»ны язганда миндә алар бөтенләй юк иде, һәм аларның нинди булуын белми идем. Хәзер берничәсе булгач, аларның мин курыккан кадәр үк куркыныч түгеллеген күреп җиңел сулап куйдым. Статистик фильтрлар тудырган ялган уңай нәтиҗәләр спэмга бик охшаш хатлар булып чыга, һәм болар — югалтуы сезне иң аз борчый торган хатлар була [9].
Ялган уңай нәтиҗәләрнең икесе мин берәр нәрсә сатып алган компанияләрнең яңалыклар таратмасы иде. Мин аларны алырга беркайчан да язылмаган идем, шуңа күрә аларны спэм дип тә атарга була, ләкин мин аларны ялган уңай дип саныйм, чөнки элек аларны спэм буларак бетерми идем. Фильтрлар аларны тотты, чөнки гыйнварда ике компания дә хатларны үз серверларыннан җибәрү урынына коммерцияле җибәрүчеләргә күчте, һәм башламнары да, төп текстлары да спэмга хас сыйфатлар белән тулды.
Әмма өченче ялган уңай нәтиҗә начар иде. Ул Мисырдагы берәүдән килгән иде һәм тулысынча баш хәрефләр белән язылган иде. Бу — токеннарны регистрга сизгер итүнең турыдан-туры нәтиҗәсе; «Спэм өчен план»дагы фильтр аны тотмас иде.
Гомуми ялган уңай нәтиҗәләр дәрәҗәсен әйтү кыен, чөнки статистик яктан без шау-шу эчендә. Фильтрлар (кимендә, нәтиҗәле фильтрлар) өстендә эшләгән һәркем бу проблеманы белә. Кайбер электрон хатларның спэм булу-булмавын әйтүе кыен, һәм фильтрларны бик тыгыз итеп көйләгәндә нәкъ шундыйлар каршыгызга чыга. Мәсәлән, фильтр хәреф ялгышы аркасында минем адреска җибәрелгән ике хатны һәм мине башка кеше дип уйлап җибәрелгән бер хатны тотты. Дөресен әйткәндә, бу минем спэмым да, спэм булмаган хатым да түгел.
Тагын бер ялган уңай нәтиҗә Virtumundo вице-президентыннан булды. Мин алардан үземне клиент дип танытып хат яздым, һәм җавап Virtumundo-ның почта серверлары аша килгәнгә күрә, аның башламнары күз алдына китерерлек иң начар төрдә иде. Күрәсең, бу да чын ялган уңай нәтиҗә түгел, ә Гейзенбергның билгесезлек эффекты кебек бер нәрсә: мин аны спэм фильтрлау турында язганга күрә генә алдым.
Боларны санамаганда, якынча 7740 чын хат арасыннан миндә барлыгы биш ялган уңай нәтиҗә булды, ягъни 0,06% дәрәҗәсе. Башка икесе — мин сатып алган әйбернең складта булмавы турында белдерү һәм Evite сайтыннан кичәгә чакыру турындагы искәртү иде.
Бу сан камил ышанычлы дип уйламыйм, өлешчә сайланма бик кечкенә булганга, өлешчә фильтрның боларның кайберләрен тотмаслык итеп төзәтеп буласына ышанганга күрә.
Ялган уңай нәтиҗәләр миңа ялган тискәре нәтиҗәләрдән бөтенләй башка төр хата булып күренә. Фильтрлау дәрәҗәсе — нәтиҗәлелек үлчәме. Ялган уңай нәтиҗәләрне мин күбрәк программа хаталары (баглар) дип саныйм. Мин фильтрлау дәрәҗәсен яхшыртуга — оптимизация кебек, ә ялган уңай нәтиҗәләрне киметүгә хаталарны төзәтү (debugging) кебек карыйм.
Шулай итеп, бу биш ялган уңай нәтиҗә — минем хаталар исемлегем. Мәсәлән, Мисырдан килгән хат баш хәрефләр аркасында эләкте, чөнки зур хәрефле текст фильтр күзендә аны Нигерия спэмына охшатты. Бу чыннан да бер баг кебек. HTML очрагындагы кебек үк, хатның бары тик баш хәрефләр белән язылуы — асылда һәр сүз өчен түгел, ә концептуаль яктан бары бер үзенчәлек. Миңа хәреф регистры белән катлаулырак һәм нәфисрәк эш итәргә кирәк.
Шуңа күрә бу 0,06%тан нинди нәтиҗә ясарга? Күп түгел, дип уйлыйм. Сайланма күләменең кечкенә булуын истә тотып, аны өске чик дип карарга була. Ләкин бу этапта ул Байес фильтрлавының ниндидер эчке хата дәрәҗәсе түгел, ә күбрәк минем тормышка ашыруымдагы хаталарның күрсәткече.
Киләчәк
Алга таба нәрсә? Фильтрлау — оптимизация мәсьәләсе, ә оптимизациянең ачкычы — профильләштерү. Кодыгызның кайда аксавын чамаларга тырышмагыз, чөнки сез ялгышачаксыз. Кодыгыз кайда әкрен эшли — шунда карагыз һәм шуны төзәтегез. Фильтрлауда бу шуны аңлата: үткәреп җибәргән спэмнарыгызга карагыз һәм аларны тоту өчен нәрсә эшләргә мөмкин булганын аңлагыз.
Мәсәлән, хәзер спэм җибәрүчеләр фильтрлардан качу өчен актив эшли, һәм алар эшләгән бер нәрсә — фильтрлар танымасын өчен сүзләрне бүлгәләү һәм хаталы язу. Ләкин моның өстендә эшләү минем беренче чираттагы эшем түгел, чөнки андый спэмнарны тоту минем өчен әле һаман авырлык тудырмый [10].
Хәзерге вакытта миңа кыенлык тудырган ике төрле спэм бар. Берсе — сезне сөйләшергә яки танышу сайтындагы профилен карарга чакырган хатын-кыз хаты булып кыланучы төр. Алар үтеп китә, чөнки сату-алу сүзләрен кулланмыйча гына ясый торган бердәнбер сату тәкъдиме — шул. Алар гадәти электрон хатның шул ук сүзлеген кулланалар.
Мин фильтрлауда кыенлык кичерә торган икенче төр спэм — мәсәлән, Болгариядәге заказ буенча программалаштыру хезмәтләрен тәкъдим итүче компанияләр хатлары. Алар үтә, чөнки мин үзем дә программачы, һәм спэмнар минем чын хатларымдагы кебек үк сүзләр белән тулы.
Мин, мөгаен, башта шәхси белдерүләр төренә игътибар итәрмен. Якынрак карасам, болар белән минем чын хатларым арасында статистик аермалар таба алырмын кебек тоела. Язу стиле, һичшиксез, башка, гәрчә моны тоту өчен күп сүзле фильтрлау кирәк булырга мөмкин. Шулай ук мин аларның URL-ны кабатларга яратуларын күрәм, ә гадәти хатка URL керткән кеше моны эшләмәс иде [11].
Аутсорсинг төрен тоту кыен булачак. Хәтта сайтка робот җибәрсәгез дә, фаш итүче статистик дәлил таба алмассыз. Бәлки бердәнбер җавап — спэмнарда рекламаланган доменнарның үзәк исемлегедер [12]. Ләкин мондый төр хатлар бик күп була алмый. Әгәр калган бердәнбер спэм Болгариядән заказ буенча программалаштыру хезмәтләре тәкъдимнәре генә булса, барыбыз да башка нәрсәгә күчә алыр идек.
Статистик фильтрлау безне чынлап та шул ноктага җиткерерме? Белмим. Хәзерге вакытта шәхсән минем өчен спэм проблема түгел. Ләкин спэмчылар әле статистик фильтрларны алдарга җитди омтылыш ясамадылар. Алар моны эшли башлагач нәрсә булыр?
Мин челтәр дәрәҗәсендә эшли торган фильтрларга өметләнеп карамыйм [13]. Узып китәргә кирәк булган статик киртә барлыкка килсә, спэм җибәрүчеләр аны урап узуда бик оста. Хәтта хәзер үк сезнең хатыгызны Spamassassin аша үткәреп, аның тоткарланачагын яки тоткарланмаячагын әйтә торган Assurance Systems исемле компания бар.
Челтәр дәрәҗәсендәге фильтрлар бөтенләй файдасыз булмас. Алар бөтен «opt-in» спэмны (ягъни Virtumundo һәм Equalamail кебек, чынлап та язылу буенча исемлекләр алып барабыз дип раслаучы компанияләрдән килгән спэмны) юк итү өчен җитәрлек булырга мөмкин. Төп текстта нәрсә язылуына карамастан, сез аларны башламнарына карап кына фильтрлый аласыз. Ләкин башламнарны ялганларга яки ачык релейларны (open relays) кулланырга әзер булган теләсә кем, шул исәптән, мөгаен, порно-спэмчыларның күбесе, теләсәләр челтәр дәрәҗәсендәге фильтрлар аша ниндидер хәбәрне барыбер үткәрә алачак. (Әлбәттә, алар җибәрергә теләгән төп хәбәрне түгел, ләкин бу да бер нәтиҗә.)
Мин ихтималлыкларны һәр конкрет кулланучының хатларына нигезләнеп исәпли торган фильтрларга өмет белән карыйм. Алар ялган уңай нәтиҗәләрдән качуда гына түгел, фильтрлауда да күпкә нәтиҗәлерәк була ала: мәсәлән, хәбәрнең теләсә кайсы җирендә алуның электрон почта адресын base-64 белән кодланган килеш табу — бик яхшы спэм күрсәткече.
Ләкин шәхси фильтрларның төп өстенлеге — аларның барысы да төрле булачагында. Әгәр һәркемнең фильтрлары төрле ихтималлыкларга ия булса, бу спэмчыларның оптимизация циклын — программачылар телендә «үзгәртү-компиляцияләү-сынау» (edit-compile-test) циклын — гаҗәп акрынайтачак. Үз өстәлендәге ниндидер фильтр күчермәсеннән үткәнче спэмны җиңелчә көйләү урынына, аларга һәр үзгәреш өчен сынау җибәрүе ясарга туры киләчәк. Бу интерактив кабыгы (toplevel) булмаган телдә программалаштыру кебек булыр иде, һәм мин моны дошманыма да теләмәс идем.
Искәрмәләр
[1] Paul Graham. «A Plan for Spam.» August 2002. http://paulgraham.com/spam.html.
Бу алгоритмдагы ихтималлыклар Байес кагыйдәсенең гадиләштерелгән (дегенератив) очрагын кулланып исәпләнә. Монда ике гадиләштерүче фараз бар: үзенчәлекләрнең (ягъни сүзләрнең) ихтималлыклары бәйсез, һәм без электрон хатның спэм булуының априор ихтималлыгы турында бернәрсә дә белмибез.
Беренче фараз текст классификациясендә киң таралган. Аны кулланган алгоритмнар «гади (наив) Байес» дип атала.
Икенче фаразны мин шуңа күрә ясадым: минем керүче хатларымдагы спэм өлеше көннән-көн (хәтта сәгатьтән-сәгатькә) шулкадәр нык тирбәлә иде ки, гомуми априор нисбәт фаразлаучы буларак бернинди кыйммәткә ия түгел кебек тоелды. Әгәр сез P(spam) һәм P(nonspam) икесен дә 0,5 дип уйласагыз, алар кыскара һәм сез аларны формуладан чыгара аласыз.
Әгәр сез спэмның гадәти хатка нисбәте даими рәвештә бик югары яки (аеруча) бик түбән булган шартларда Байес фильтрлавын башкарсагыз, априор ихтималлыкларны исәпкә алып фильтр нәтиҗәлелеген арттыра алыр идегез. Моны дөрес эшләү өчен сезгә нисбәтләрне көн вакыты буенча күзәтергә туры килер иде, чөнки спэмның да, гадәти хатларның да күләме тәүлек буенча ачык аерылып торган үзгәрешләргә ия.
[2] Patrick Pantel and Dekang Lin. «SpamCop-- A Spam Classification & Organization Program.» Proceedings of AAAI-98 Workshop on Learning for Text Categorization.
[3] Mehran Sahami, Susan Dumais, David Heckerman and Eric Horvitz. «A Bayesian Approach to Filtering Junk E-Mail.» Proceedings of AAAI-98 Workshop on Learning for Text Categorization.
[4] Ул вакытта миндә якынча 4000 гадәти электрон хаттан нуль ялган уңай нәтиҗә бар иде. Әгәр чираттагы гадәти хат ялган тоткарланса, бу безгә 0,03% бирер иде. Бу ялган уңай нәтиҗә күрсәткечләре ышанычсыз, соңрак моны аңлатам. Мин биредә бу санны ялган уңай нәтиҗә дәрәҗәсе нинди генә булмасын, аның 1,16%тан ким булуын ассызыклау өчен генә китерәм.
[5] Bill Yerazunis. «Sparse Binary Polynomial Hash Message Filtering and The CRM114 Discriminator.» Proceedings of 2003 Spam Conference.
[6] «Спэм өчен план»да мин 0,99 һәм 0,01 бусагаларын кулландым. Корпусларның зурлыгына пропорциональ бусагаларны куллану акланган кебек. Хәзер миндә һәр төр хаттан якынча 10 000 булганлыктан, мин 0,9999 һәм 0,0001 кулланам.
[7] Монда бер җитешсезлек бар, аны төзәтергә кирәктер, мөгаен. Хәзерге вакытта «Subject*foo» гади генә «foo»га дегенерацияләнгәндә (гадиләшкәндә), бу сезнең «foo»ның төп текстта яки мин билгеләмәгән башка башлам юлларында очрашу статистикасын алуыгызны аңлата. Мин гомуми «foo» өчен дә, конкрет версияләр өчен дә статистиканы күзәтергә һәм «Subject*foo»дан «foo»га түгел, ә «Anywhere*foo»га дегенерацияләргә тиеш идем. Регистр өчен дә шул ук: баш хәрефтән кече хәрефкә түгел, ә теләсә кайсы регистрга гадиләштерергә кирәк.
Бәяләр белән дә шулай эшләү отышлы булыр иде, мәсәлән, «$129.99»дан «$--9.99», «$--.99» һәм «$--»гә гадиләштерү.
Сүзләрне үз тамырларына кадәр гадиләштерергә дә булыр иде, ләкин бу, мөгаен, корпуслар кечкенә булган башлангыч чорда гына фильтрлау дәрәҗәсен арттырыр иде.
[8] Steven Hauser. «Statistical Spam Filter Works for Me.» http://www.sofbot.com.
[9] Ялган уңай нәтиҗәләр барысы да бертөрле түгел, һәм спэмны туктату ысулларын чагыштырганда моны истә тотарга кирәк. Фильтрлар китереп чыгарган күп кенә ялган уңай нәтиҗәләр спэмга якын булган (һәм югалтуы сезне борчымаган) хатлар булса, кара исемлекләр аркасында килеп чыккан ялган уңай нәтиҗәләр, мәсәлән, бары тик ялгыш интернет-провайдер сайлаган кешеләрнең хатлары гына булачак. Ике очракта да сез спэмга якын хатларны тотасыз, ләкин кара исемлекләр өчен бу якынлык физик яктан, ә фильтрлар өчен текст ягыннан.
[10] Әгәр спам җибәрүчеләр токеннарны яшерүдә шулкадәр остарсалар һәм бу проблема тудыра башласа, без моңа бушлыкларны (пробелларны), нокталарны, өтерләрне һ.б. алып ташлап, килеп чыккан эзлеклелектән сүзләрне сүзлек ярдәмендә аерып алу белән җавап бирә алабыз. Һәм, әлбәттә, башлангыч текста күренмәгән сүзләрне шушы юл белән табу үзе үк спамның бер дәлиле булып торачак.
Сүзләрне аерып алу җиңел булмаячак. Бу сүз чикләрен торгызудан гына күбрәкне таләп итәчәк; спам җибәрүчеләр хәрефләр өсти дә («xHot nPorn cSite»), төшереп тә калдыра («P#rn»). Монда күрү сәләтен тикшерү (vision research) файдалы булырга мөмкин, чөнки кешенең күрү сәләте — мондый хәйләләр якынлашачак чик булып тора.
[11] Гомумән алганда, спам гадәти электрон хатларга караганда кабатланучанрак. Алар үз хәбәрен кат-кат әйтеп сеңдерергә тели. Хәзерге вакытта мин иң өске 15 токенда дубликатларга рөхсәт бирмим, чөнки җибәрүче ниндидер начар сүзне берничә тапкыр кулланса, ялган уңай нәтиҗә (false positive) килеп чыгарга мөмкин. (Минем хәзерге фильтрымда «dick» сүзенең спам ихтималлыгы .9999, әмма ул шулай ук кеше исеме дә.) Шулай да без, ким дигәндә, кабатлануны сизеп алырга тиешбез кебек, шуңа күрә мин, Брайан Бертон (Brian Burton) SpamProbe'та эшләгәнчә, һәр токеннан икешәргә кадәр рөхсәт итеп карарга мөмкинмен.
[12] Спам җибәрүчеләр хәбәрдәге башка бөтен нәрсәне ясау өчен mad-lib ысулларын кулланырга мәҗбүр ителгәч, Brightmail кебек алымнар нәкъ менә шуңа әвереләчәк.
[13] Кайвакыт челтәр дәрәҗәсендә фильтрлау өстендә эшләргә кирәк, чөнки бу нәтиҗәлерәк, дигән фикерләр әйтелә. Кешеләр моны әйткәндә, гадәттә, түбәндәгене күз уңында тота: без хәзерге вакытта челтәр дәрәҗәсендә фильтрлыйбыз һәм барысын да яңадан башларга теләмибез. Әмма сез проблеманы үз чишелешегезгә яраклаштырып көйли алмыйсыз.
Тарихи яктан караганда, кыт чыганаклар (ресруслар җитешмәү) турындагы аргументлар программа тәэминатын проектлау буенча бәхәсләрдә һәрвакыт оттыручы ягында иде. Кешеләр аларны гадәттә башка сәбәпләр аркасында ясалган сайлауларны (аерым алганда, эшсез торуны) аклау өчен генә кулланалар.
Бу мәкаләнең караламаларын укыганнары өчен Сара Харлинга (Sarah Harlin), Тревор Блэквеллга (Trevor Blackwell) һәм Дэн Гиффинга (Dan Giffin), шулай ук бу фильтр эшли торган инфраструктураның күпчелек өлеше өчен кабат Дәнгә рәхмәтемне белдерәм.
Бәйле темалар: