(Был мәҡәлә 2003 йылғы Spam Conference конференцияһында телмәр рәүешендә һөйләнде. Бында A Plan for Spam яҙмаһында тасуирланған алгоритмдың эш сифатын яҡшыртыу өсөн ниҙәр эшләгәнем һәм киләсәктә нимәләр эшләргә ниәтләгәнем бәйән ителә.)
Бында мин тәҡдим итергә теләгән тәүге асыш — фәнни мәҡәләләрҙе «ялҡау баһалау» (lazy evaluation) алгоритмы. Үҙегеҙ теләгәнде яҙығыҙ ҙа алдағы хеҙмәттәргә бер ниндәй һылтанма бирмәгеҙ, шунда уҡ асыуланған уҡыусылар һеҙ һылтанырға тейеш булған барлыҡ мәҡәләләргә һылтанмалар ебәрә башлар. Мин был алгоритмды Slashdot-та «A Plan for Spam» [1] сыҡҡас астым.
Спам фильтрлау — ныҡ үҫешкән өлкә булған текстарҙы классификациялауҙың бер өлөшө, әммә спамды Байес ысулы менән фильтрлау тураһындағы тәүге мәҡәләләр 1998 йылда шул уҡ бер конференцияла тәҡдим ителгән ике хеҙмәт булған шикелле: береһе Пантел менән Лин тарафынан [2], икенсеһе — Microsoft Research төркөмөнән [3].
Был хеҙмәттәр хаҡында ишеткәс, мин бер аҙ ғәжәпләндем. Әгәр кешеләр Байес фильтрлауын дүрт йыл элек үк белгән булһа, ниңә уны барыһы ла ҡулланмаған һуң? Мәҡәләләрҙе уҡып сыҡҡас, сәбәбен аңланым. Пантел менән Линдың фильтры икеһенең иң һөҙөмтәлеһе ине, әммә ул спамдың бары тик 92%-ын ғына тота һәм ялған ыңғай һөҙөмтәләр (false positives) кимәле 1,16% тәшкил итә ине.
Мин үҙем Байес спам фильтрын яҙырға ынтылғас, ул 99,5% спамды эләктерҙе, ә ялған ыңғай һөҙөмтәләр 0,03%-тан кәмерәк булды [4]. Бер үк тәжрибәне үткәреүсе ике кешенең ҡырҡа айырылған һөҙөмтәләр алыуы һәр ваҡыт шомландыра. Бында ул айырыуса шомло, сөнки был ике һандар йыйылмаһы бер-береһенә ҡапма-ҡаршы һығымталар яһарға мөмкин. Төрлө ҡулланыусыларҙың талаптары төрлөсә, әммә минеңсә, күптәр өсөн 1,16% ялған ыңғай күрһәткес менән 92% фильтрлау — яраҡһыҙ хәл итеү юлы, ә 0,03%-тан кәм ялған һөҙөмтә менән 99,5% — яраҡлы тигәнде аңлата.
Ни өсөн һуң беҙҙә шундай төрлө һандар килеп сыҡты? Мин Пантел менән Линдың һөҙөмтәләрен ҡабатлап ҡараманым, әммә мәҡәләне уҡып, был айырманы аңлатҡан биш сәбәпте күрәм.
Беренсеһе — улар үҙ фильтрын бик аҙ мәғлүмәттә өйрәткән: 160 спам һәм 466 ғәҙәти хат. Бындай бәләкәй мәғлүмәттәр тупланмаһында фильтрҙың сифаты әле үҫергә генә тейеш. Шуға күрә уларҙың һандары хатта дөйөм Байес фильтрлауын түгел, ә үҙ алгоритмдарының етештереүсәнлеген дә теүәл күрһәтмәҫкә мөмкин.
Ләкин иң мөһим айырма, минеңсә, уларҙың хат ташыу башлыҡтарын (headers) иғтибарһыҙ ҡалдырыуындалыр. Спам фильтрҙары өҫтөндә эшләгән һәр кемгә был сәйер ҡарар булып күренер. Шулай ҙа үҙем яҙған иң тәүге фильтрҙарҙа мин дә башлыҡтарҙы иҫәпкә алмағайным. Ни өсөн? Сөнки мин мәсьәләнең ябай булыуын теләнем. Ул ваҡытта хат башлыҡтары тураһында күп белмәй инем, һәм улар миңә осраҡлы сүп-сар менән тулы һымаҡ тойолдо. Фильтр яҙыусылар өсөн бында бер һабаҡ бар: мәғлүмәттәрҙе ситтә ҡалдырмағыҙ. Был үтә асыҡ ҡағиҙә кеүек тойолор, әммә мин уны бер нисә тапҡыр үҙ елкәмдә татырға мәжбүр булдым.
Өсөнсөнән, Пантел менән Лин токендарҙы стемминг ярҙамында эшкәрткән, йәғни мәҫәлән, «mailing» һәм «mailed» һүҙҙәрен икеһен дә «mail» тамырына тиклем ҡыҫҡартҡан. Бәлки, корпустың бәләкәй булыуы арҡаһында улар үҙҙәрен шулай эшләргә мәжбүр тип тойғандыр, әммә был — ваҡытынан алда оптималләштереүҙең бер төрө.
Дүртенсенән, улар ихтималлыҡтарҙы икенсе төрлө иҫәпләгән. Улар барлыҡ токендарҙы ҡулланған, ә мин бары тик иң әһәмиәтле 15 токенды ғына ҡулланам. Әгәр барлыҡ токендарҙы файҙаланһағыҙ, һеҙ оҙонораҡ спамдарҙы үткәреп ебәрәсәкһегеҙ — мәҫәлән, кемдер ниндәйҙер селтәрле маркетингта нисек байып киткәнгә тиклемге үҙ тормош тарихын һөйләгән хаттар. Бынан тыш, спам ебәреүселәргә бындай алгоритмды алдауы еңел булыр ине: бары тик спам терминдарын тигеҙләр өсөн осраҡлы текстың ҙур киҫәген өҫтәү ҙә етә.
Һәм ахырҙа, улар ялған ыңғай һөҙөмтәләргә ҡаршы тайпылыш яһамаған. Минеңсә, теләһә ниндәй спам фильтрлау алгоритмында фильтрлау кимәле иҫәбенә ялған һөҙөмтәләр һанын кәметә торған уңайлы бер көйләү ҡоралы булырға тейеш. Мин быны ғәҙәти хаттар корпусындағы токендар осрашыуын икеләтә арттырып иҫәпләү юлы менән эшләйем.
Мин спам фильтрлауға ябай тексты классификациялау мәсьәләһе итеп ҡарауҙы яҡшы фекер тип иҫәпләмәйем. Тексты классификациялау алымдарын ҡулланырға була, ләкин хәл итеү алымдары был текстың электрон хат булыуын, айырыуса спам булыуын сағылдыра ала һәм сағылдырырға тейеш. Электрон хат — ул ябай текст ҡына түгел, уның төҙөлөшө (структураһы) бар. Спам фильтрлау — ул ябай классификация түгел, сөнки ялған ыңғай һөҙөмтәләр ялған кире һөҙөмтәләргә ҡарағанда күпкә насарыраҡ, һәм уларға бөтөнләй икенсе төр хата тип ҡарарға кәрәк. Һәм хатаның сығанағы — ябай осраҡлы үҙгәрештәр генә түгел, ә һеҙҙең фильтрҙы еңергә тырышып әүҙем эшләгән тере кеше — спам таратыусы.
Токендар
Slashdot мәҡәләһенән һуң мин ишеткән тағы бер проект Билл Еразунистың CRM114 проекты булды [5]. Был мин яңы ғына телгә алған дизайн принцибына ҡаршы миҫал булып тора. Ул — ябай текст классификаторы, ләкин шул тиклем хайран ҡалырлыҡ кимәлдә һөҙөмтәле эшләй, хатта үҙенең нимә эшләгәнен дә белмәйенсә, спамды тиерлек камил фильтрлай.
CRM114-тең нисек эшләгәнен аңлағас, айырым һүҙҙәр ярҙамында фильтрлауҙан шундай алымға күсергә тура киләсәге ҡотолғоһоҙ күренде. Ләкин иң башта мин айырым һүҙҙәр менән ҡайҙа тиклем барып етеп булыуын ҡарарға булдым. Һәм яуап — ғәжәпләнерлек алыҫҡа.
Нигеҙҙә мин аҡыллыраҡ токенизация өҫтөндә эшләнем. Хәҙерге спамда CRM114 күрһәткестәренә яҡынлашҡан фильтрлау кимәленә өлгәшә алдым. Был алымдар башлыса Биллдыҡына бәйһеҙ (ортогональ); оптималь сиселеш икеһен дә берләштерә алыр ине.
«A Plan for Spam» токендың бик ябай билдәләмәһен ҡуллана. Хәрефтәр, цифрҙар, дефистар, апострофтар һәм доллар билдәләре төп тамғалар тип һанала, ә ҡалған бөтә нәмә — бүлгес. Шулай уҡ мин хәреф ҙурлығын (регистрҙы) иҫәпкә алмағайным.
Хәҙер минең токен билдәләмәм ҡатмарлыраҡ: Регистр һаҡлана.
Өндәү билдәләре төп тамғалар иҫәбенә керә.
Нөктәләр менән өтөрҙәр ике цифр араһында булһа, төп тамға тип һанала. Был миңә IP адрестарҙы һәм хаҡтарҙы үҙгәрешһеҙ ҡалдырырға мөмкинлек бирә.
$20-25 кеүек хаҡ диапазоны ике токен бирә: $20 һәм $25.
To, From, Subject һәм Return-Path юлдарында, йәки URL-дар эсендә осраған токендар тейешенсә тамғалана. Мәҫәлән, Subject юлындағы «foo» һүҙе «Subject*foo» булып китә. (Йондоҙсоҡ урынына төп тамға булараҡ рөхсәт итмәгән теләһә ниндәй символ булыуы мөмкин.) Бындай саралар фильтрҙың һүҙлеген киңәйтә, һәм был уны айыра белеүсән итә. Мәҫәлән, хәҙерге фильтрҙа Subject юлындағы «free» токененең спам булыу ихтималлығы 98%, ә шул уҡ токендың хат эсендә (body) булыу ихтималлығы — бары 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 «Plan for Spam» фильтрында был бөтә токендарҙың да ихтималлығы бер үк — 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 ине.
Әлбиттә, бер нисә токендың теҙмәһенә ҡарау уны еңел генә эләктерер ине. «Below is the result of your feedback form» фразаһы уны шунда уҡ фашлай.
Дүртенсе спам — мин «киләсәк спамы» тип атаған нәмә ине, сөнки спамдың тап ошоғаса үҫешеүен көтәм: бер ниндәй шик тыуҙырмаған нейтраль текст һәм уның артынан килгән URL. Был осраҡта хат кемдеңдер үҙ сәхифәһен төҙөп бөтөүе һәм уға ҡарарға саҡырыуы хаҡында ине. (Был сәхифә, әлбиттә, порносайт рекламаһы булып сыҡты.)
Әгәр спам таратыусылар башлыҡтар менән һаҡ булһа һәм яңы URL ҡулланһа, фильтрҙарҙың иғтибарын йәлеп итерлек бер нәмә лә булмаясаҡ. Әлбиттә, сәхифәне тикшереү өсөн өҫтәмә робот ебәреп яуап бирә алабыҙ. Ләкин был кәрәкмәҫкә лә мөмкин. «Киләсәк спамы» өсөн яуап биреү күрһәткесе түбән булырға тейеш, юғиһә уны һәр кем ҡулланыр ине. Әгәр ул етерлек дәрәжәлә түбән булһа, спам таратыусыларға уны ебәреү файҙа килтермәйәсәк, һәм уны фильтрлау өсөн беҙгә ныҡ көс түгергә тура килмәйәсәк.
Ә хәҙер ысынлап шаҡ ҡатырғыс яңылыҡ: шул уҡ бер айлыҡ осорҙа миндә өс ялған ыңғай һөҙөмтә (false positive) булды.
Ниндәйҙер кимәлдә ялған ыңғай һөҙөмтәләр алыу хатта еңеллек бирә. «A Plan for Spam» яҙған ваҡытта миндә улар бөтөнләй булмағайны, һәм уларҙың нисек булырын белмәй инем. Хәҙер, бер нисәүһен күргәс, улар мин ҡурҡҡан тиклем насар булмауына ҡыуандым. Статистик фильтрҙарҙың ялған ыңғай һөҙөмтәләре спамға ныҡ оҡшаған хаттар булып сыға, һәм ғәҙәттә улар — юғалтыуығыҙға үкенмәйәсәк хаттар [9].
Ялған һөҙөмтәләрҙең икеһе — мин әйберҙәр һатып алған компанияларҙың яңылыҡтар хәбәрнамәһе ине. Мин уларҙы алырға һорамағайным, шуға күрә уларҙы спам тип иҫәпләргә лә булыр ине, әммә мин уларҙы быға тиклем спам тип юймағанлыҡтан, ялған ыңғай һөҙөмтәләр рәтенә индерәм. Фильтрҙар уларҙы тотоуҙың сәбәбе: ғинуарҙа ике компания ла үҙ серверҙары урынына коммерция электрон почта таратҡыстарына күсте, һәм башлыҡтар ҙа, хаттарҙың эстәлеге лә күпкә спамға оҡшаш булып китте.
Өсөнсө ялған һөҙөмтә иһә насар ине. Ул Мысырҙағы бер кешенән килгән һәм тотошлай ҙур хәрефтәр менән яҙылған хат булды. Был туранан-тура токендарҙың регистрын иҫәпкә алыу сәбәпле булды; «Plan for Spam» фильтры уны тотмаҫ ине.
Ялған ыңғай һөҙөмтәләрҙең дөйөм өлөшөн әйтеүе ҡыйын, сөнки статистик яҡтан беҙ ҡамасаулауҙар (noise) кимәлендәбеҙ. Фильтрҙар (ғәмәлдәге фильтрҙар) менән эшләгән һәр кем был проблеманы белә. Ҡайһы бер хаттар буйынса уларҙың спам булыу-булмауын асыҡлауы ҡыйын, һәм тап ошондай хаттар менән һеҙ фильтрҙы бик ҡаты көйләгәндә эш итә башлайһығыҙ. Мәҫәлән, әлегә тиклем фильтр хаталы яҙыу арҡаһында минең адресыма килгән ике хатты, һәм мине башҡа кеше тип уйлап ебәрелгән тағы бер хатты тотоп ҡалды. Улар минең өсөн спам да, ғәҙәти хат та түгел тип әйтергә була.
Тағы бер ялған һөҙөмтә Virtumundo вице-президентынан булды. Мин уларға клиент булып ҡыланып хат яҙҙым, һәм яуап Virtumundo-ның почта серверҙары аша килгәнгә күрә, унда күҙ алдына килтерергә мөмкин булған иң яман башлыҡтар бар ине. Был да ысын ялған ыңғай һөҙөмтә түгел, ә Гейзенбергтың билдәһеҙлек принцибына оҡшаш бер күренеш: мин уны спам фильтрлау тураһында яҙғанға ғына алдым.
Быларҙы иҫәпкә алмағанда, миндә әлегә тиклем 7740 ғәҙәти хаттан бөтәһе биш ялған ыңғай һөҙөмтә булды, был — 0,06%. Ҡалған икәүһе — һатып алған әйберемдең һуңыраҡ ебәреләсәге хаҡында белдереү һәм Evite-тан мәжлескә саҡырыу ине.
Мин был һанға тулыһынса ышанырға ярамай тип уйлайым, сөнки һайланма бик бәләкәй, һәм шулай уҡ мин фильтрҙы быларҙың ҡайһы берҙәрен тотмаҫлыҡ итеп төҙәтә алам тип иҫәпләйем.
Ялған ыңғай һөҙөмтәләр миңә ялған кире һөҙөмтәләрҙән айырылған икенсе төрлө хата булып күренә. Фильтрлау кимәле — ул сифат күрһәткесе. Ялған ыңғай һөҙөмтәләргә мин күберәк программа хаталары (багтар) кеүек ҡарайым. Фильтрлау сифатын яҡшыртыуға мин оптималләштереү кеүек, ә ялған ыңғай һөҙөмтәләрҙе кәметеүгә хаталарҙы төҙәтеү (debugging) кеүек ҡарайым.
Шуға күрә был биш ялған һөҙөмтә — минең төҙәтеләсәк хаталар исемлеге. Мәҫәлән, Мысырҙан килгән хат ҙур хәрефтәр менән яҙылғанға күрә, фильтр уны Нигерия спамы тип ҡабул итте һәм эләктерҙе. Был ысынында бер хата. HTML менән булған кеүек, хаттың тотошлай ҙур хәрефтәрҙә булыуы — төшөнсә булараҡ һәр һүҙгә айырым түгел, ә дөйөм бер билдә. Миңә регистр менән несерәгерәк эш итергә кәрәк.
Шулай итеп, был 0,06%-тан ниндәй һығымта яһарға? Әллә ни ҙур һығымта түгел, минеңсә. Һайланманың бәләкәй булыуын иҫәптә тотоп, уны өҫкө сик тип иҫәпләргә була. Ләкин был баҫҡыста ул Байес фильтрлауының ниндәйҙер тәбиғи ялған һөҙөмтәләр кимәленә ҡарағанда, күберәк минең реализациялағы хаталарҙың үлсәме булып тора.
Киләсәк
Артабан нимә? Фильтрлау — оптималләштереү мәсьәләһе, ә оптималләштереүҙең асылы — профилдәү (ҡайһы урында тотҡарланыуҙы үлсәү). Кодығыҙҙың ҡайһы төшө әкрен эшләгәнен фаразларға тырышмағыҙ, сөнки яңылышасаҡһығыҙ. Кодтың ҡайҙа әкрен эшләгәненә ҡарағыҙ һәм шуны төҙәтегеҙ. Фильтрлауҙа был шуны аңлата: үткәреп ебәргән спамдарға ҡарағыҙ һәм уларҙы тотоу өсөн ни эшләй алған булырығыҙҙы асыҡлағыҙ.
Мәҫәлән, спам таратыусылар хәҙер фильтрҙарҙан ҡасыу өсөн яһил эш алып бара, һәм улар эшләгән бер нәмә — фильтрҙар танымаһын өсөн һүҙҙәрҙе бүлгеләү һәм хаталар менән яҙыу. Ләкин бының өҫтөндә эшләү — минең беренсе маҡсатым түгел, сөнки мин бындай спамдарҙы һаман да бер ҡыйынлыҡһыҙ эләктерәм [10].
Хәҙерге ваҡытта миңә ауырлыҡ тыуҙырған спамдың ике төрө бар. Беренсеһе — танышыу сайтында уның менән һөйләшергә йәки профилен ҡарарға саҡырған ҡатын-ҡыҙҙан килгән булып ҡыланған хаттар. Улар үтеп китә, сөнки улар — һатыу һүҙҙәрен ҡулланмайынса реклама яһауҙың берҙән-бер төрө. Улар ғәҙәти хаттағы кеүек үк һүҙлекте ҡуллана.
Фильтрлауға ауырлыҡ тыуҙырған икенсе төр спамдар — мәҫәлән, Болгариялағы компанияларҙың заказ буйынса программалау хеҙмәттәрен тәҡдим иткән хаттары. Улар үтеп китә, сөнки мин үҙем дә программалаусы, һәм спамдар минең ысын хаттарымдағы шул уҡ һүҙҙәр менән тулы.
Мин, моғайын, башта шәхси иғландар төрөнә иғтибар итермен. Яҡыныраҡ ҡараһам, улар менән минең ысын хаттарым араһында статистик айырмалар таба алырмын тип уйлайым. Яҙыу стиле һис шикһеҙ айырыла, әммә быны асыҡлау өсөн күп һүҙле фильтрлау талап ителеүе бар. Бынан тыш, улар URL-ды ҡабатларға ярата, ә ғәҙәти хатта һылтанма яҙған кеше былай эшләмәй [11].
Аутсорсинг төрөн эләктереү ҡыйын буласаҡ. Хатта сайтҡа робот ебәрһәгеҙ ҙә, һеҙ инҡар итеп булмаҫлыҡ статистик дәлил тапмаясаҡһығыҙ. Бәлки, берҙән-бер сиселеш — спамда рекламаланған домендарҙың үҙәкләштерелгән исемлегелер [12]. Ләкин бындай хаттар бик күп була алмай. Әгәр ҡалған берҙән-бер спам Болгариянан контракт буйынса программалау тәҡдимдәре булһа, барыбыҙ ҙа тыныс ҡына башҡа эшкә күсә алыр инек.
Статистик фильтрлау беҙҙе ысынлап та шул кимәлгә алып етерме? Белмәйем. Хәҙерге ваҡытта шәхсән минең өсөн спам — проблема түгел. Ләкин спам таратыусылар әлегә статистик фильтрҙарҙы алдар өсөн етди тырышлыҡ һалманы. Улар быны башлағас нимә булыр?
Мин селтәр кимәлендә эшләгән фильтрҙарға артыҡ ҙур өмөт бағламайым [13]. Алда урап үтергә кәрәк булған үҙгәрмәҫ кәртә торһа, спам таратыусылар уны урап үтеүҙе яҡшы төшөнә. Хатты Spamassassin аша үткәреп, уның фильтрҙа ҡалыу-ҡалмауын алдан әйтеп биреүсе Assurance Systems тигән компания бар инде хәҙер.
Селтәр кимәлендәге фильтрҙар бөтөнләй файҙаһыҙ булмаҫ. Улар бөтә «opt-in» спамды юҡ итергә етерлек булыр, йәғни үҙҙәренең opt-in исемлектәре менән эшләүен раҫлаған Virtumundo һәм Equalamail кеүек компанияларҙың спамын. Уларҙы эстәлегендә нимә яҙылыуына ҡарамаҫтан, башлыҡтарына ҡарап ҡына фильтрларға була. Ләкин ялған башлыҡтар ҡулланырға йәки асыҡ релейҙарҙы файҙаланырға теләгән һәр кем (күрәһең, күпселек порно-спамсыларҙы ла индереп), теләһә, селтәр кимәлендәге фильтрҙар аша ниндәйҙер хәбәрҙе үткәрә аласаҡ. (Әлбиттә, улар ебәрергә теләгән теүәл хәбәрҙе түгел, әммә был да бер һөҙөмтә.)
Мин ҙур өмөт бағлаған фильтрҙар — һәр айырым ҡулланыусының хаттары нигеҙендә ихтималлыҡтарҙы иҫәпләгәндәре. Улар ялған һөҙөмтәләрҙән ҡасыуҙа ғына түгел, фильтрлауҙа ла күпкә һөҙөмтәлерәк була ала: мәҫәлән, хаттың теләһә ҡайһы ерендә алыусының base-64 менән кодланған электрон почта адресын табыу — спамдың бик яҡшы күрһәткесе.
Ләкин шәхси фильтрҙарҙың ысын өҫтөнлөгө шунда: уларҙың барыһы ла төрлө буласаҡ. Әгәр һәр кемдең фильтрында ихтималлыҡтар төрлөсә булһа, был спамсыларҙың оптималләштереү циклын (программалаусылар төҙәтеү-компиляциялау-һынау циклы тип атаған нәмәне) ҡот осҡос дәрәжәлә аҡрынайтасаҡ. Компьютерҙағы ниндәйҙер фильтр күсермәһе аша үткәнсе хатты көйләү урынына, уларға һәр үҙгәртеү өсөн һынау хаттары ебәрергә тура киләсәк. Был интерактив мөхитһеҙ (интерактив toplevel-һыҙ) телдә программа яҙыу кеүек булыр ине, ә мин быны бер кемгә лә теләмәҫ инем.
Иҫкәрмәләр
[1] Пол Грэм. «A Plan for Spam.» Август 2002. http://paulgraham.com/spam.html.
Был алгоритмда ихтималлыҡтар Байес ҡағиҙәһенең ябайлаштырылған осрағы ярҙамында иҫәпләнә. Бында ике ябайлаштырыусы фараз бар: билдәләрҙең (йәғни һүҙҙәрҙең) ихтималлыҡтары бер-береһенә бәйһеҙ, һәм хаттың спам булыуының башланғыс ихтималлығы тураһында беҙ бер нимә лә белмәйбеҙ.
Беренсе фараз тексты классификациялауҙа киң таралған. Уны ҡулланған алгоритмдар «ябай Байес» (naive Bayesian) тип атала.
Икенсе фаразды мин шуға ҡабул иттем: минең почтама килгән спамдың өлөшө көндән-көн (хатта сәғәттән-сәғәткә) ныҡ үҙгәреп торғанлыҡтан, алдан билдәләнгән дөйөм нисбәт күҙаллау өсөн яраҡһыҙ булып күренде. Әгәр P(spam) һәм P(nonspam) икеһе лә 0.5 тип уйлаһағыҙ, улар ҡыҫҡара һәм уларҙы формуланан алып ташларға була.
Әгәр спамдың ғәҙәти хаттарға ҡарата нисбәте даими рәүештә бик юғары йәки (айырыуса) бик түбән булған шарттарҙа Байес фильтрлауын ҡулланһағыҙ, башланғыс ихтималлыҡтарҙы индереп, фильтрҙың сифатын арттыра алыр инегеҙ. Быны дөрөҫ эшләү өсөн нисбәтте тәүлек ваҡыты буйынса күҙәтергә кәрәк булыр ине, сөнки спамдың да, ысын хаттарҙың да күләме тәүлек эсендә асыҡ билдәләнгән тәртипкә эйә.
[2] Патрик Пантел һәм Дэкан Лин. «SpamCop-- A Spam Classification & Organization Program.» Proceedings of AAAI-98 Workshop on Learning for Text Categorization.
[3] Мехран Сахами, Сьюзан Дюме, Дэвид Хекерман һәм Эрик Хорвиц. «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] Билл Еразунис. «Sparse Binary Polynomial Hash Message Filtering and The CRM114 Discriminator.» Proceedings of 2003 Spam Conference.
[6] «A Plan for Spam» мәҡәләһендә мин 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] Стивен Хаузер. «Statistical Spam Filter Works for Me.» http://www.sofbot.com.
[9] Ялған ыңғай һөҙөмтәләр бөтәһе лә бер түгел, һәм спамды туҡтатыу ысулдарын сағыштырғанда беҙ быны иҫтә тоторға тейешбеҙ. Фильтрҙар тыуҙырған күп кенә ялған ыңғай һөҙөмтәләр юғалтыуығыҙға үкенмәҫлек спамға яҡын хаттар булһа, ҡара исемлектәр (blacklists) тыуҙырған ялған һөҙөмтәләр, мәҫәлән, бары тик дөрөҫ булмаған провайдерҙы (ISP) һайлаған кешеләрҙең хаттары буласаҡ. Ике осраҡта ла һеҙ спамға яҡын хатты тотаһығыҙ, әммә ҡара исемлектәр өсөн был яҡынлыҡ — физик, ә фильтрҙар өсөн — текстыҡ яҡынлыҡ.
[10] Әгәр спам ебәреүселәр токендарҙы йәшереүҙә был етди проблема булырлыҡ дәрәжәлә оҫтарһа, беҙ ябай ғына итеп бушлыҡтарҙы, нөктәләрҙе, өтөрҙәрҙе һ.б. алып ташлай алабыҙ һәм һүҙлек ярҙамында барлыҡҡа килгән эҙмә-эҙлелектән һүҙҙәрҙе табып ала алабыҙ. Һәм, әлбиттә, төп тексында күренмәгән һүҙҙәрҙе ошондай юл менән табыу үҙе үк спам билдәһе булып торасаҡ.
Һүҙҙәрҙе табып алыу ябай булмаясаҡ. Был һүҙ сиктәрен тергеҙеүгә ҡарағанда күберәкте талап итәсәк; спам ебәреүселәр хәрефтәр өҫтәй ҙә (``xHot nPorn cSite''), төшөрөп тә ҡалдыра (``P#rn''). Бында компьютер күреүе буйынса тикшеренеүҙәр файҙалы булыуы мөмкин, сөнки кеше күреүе — бындай хәйләләр яҡынлашасаҡ сик.
[11] Дөйөм алғанда, спам хаттары ябай электрон почтаға ҡарағанда күберәк ҡабатлана. Улар шул фекерҙе һеҙҙең башығыҙға һеңдерергә теләй. Әлеге ваҡытта мин иң мөһим 15 токен араһында ҡабатланыуҙарға рөхсәт итмәйем, сөнки ебәреүсе осраҡлы рәүештә ниндәйҙер насар һүҙҙе бер нисә тапҡыр ҡулланһа, ялған ыңғай һөҙөмтә (false positive) килеп сығыуы мөмкин. (Минең хәҙерге фильтрымда ``dick'' һүҙенең спам булыу ихтималлығы 0,9999, әммә ул шул уҡ ваҡытта кеше исеме лә.) Шулай ҙа беҙгә кәм тигәндә ҡабатланыуҙарҙы күрергә кәрәк кеүек, шуға күрә мин, Брайан Бертон SpamProbe программаһында эшләгән кеүек, һәр токендың икегә тиклем экземплярына рөхсәт итеп ҡарарға мөмкинмен.
[12] Спам ебәреүселәр хәбәрҙәге башҡа бөтә нәмәне яһау өсөн mad-lib ысулдарын ҡулланырға мәжбүр булғас, Brightmail кеүек алымдар тап ошо хәлгә төшәсәк.
[13] Ҡайһы берҙә беҙ селтәр кимәлендә фильтрлау өҫтөндә эшләргә тейешбеҙ, сөнки был һөҙөмтәлерәк, тип раҫлайҙар. Кешеләр быны әйткәндә, ғәҙәттә, ошоно күҙ уңында тота: беҙ әлеге ваҡытта селтәр кимәлендә фильтрлайбыҙ һәм барыһын да яңынан башларға теләмәйбеҙ. Әммә һеҙ үҙ сиселешегеҙгә тап килтереп проблеманы көйләй алмайһығыҙ.
Тарихи яҡтан ҡарағанда, сикләнгән ресурстар тураһындағы аргументтар программа тәьминәтен проектлау буйынса бәхәстәрҙә һәр ваҡыт еңелеүсе яҡ булды. Кешеләр уларҙы тик башҡа сәбәптәр арҡаһында яһалған һайлауҙы (айырыуса эшһеҙлекте) аҡлау өсөн генә ҡулланырға күнеккән.
Был мәҡәләнең ҡараламаларын уҡып сыҡҡандары өсөн Сара Харлинға, Тревор Блэквеллға һәм Дэн Гиффинға, шулай уҡ был фильтр эшләгән инфраструктураның ҙур өлөшө өсөн тағы ла Дәнгә рәхмәт белдерәм.
Бәйле темалар: