Fra min TODO liste

Det var på tide at får gentrænet annoyance-filter med up-to-date mail + spam foldere og det tager den tid det tager.

Jeg kan varmt anbefale annoyance-filter, det er skrevet af John Walker, manden bag AutoCAD og den eneste slankebog for nørder.

Men jeg har et punkt i min TODO liste som jeg må erkende jeg aldrig når til, så nu vil jeg kaste det i grams, i håbet om at en frisk ung studerende kaster sig over opgaven.

Spam filtrering er mønstergenkendelse og sjovt nok er der ingen der behandler det som sådan. Hverken point/scoring, som spamass, eller ren Bayes som annoyance-filter udnytter den fulde information der er tilstede.

I et tidligere job havde jeg et par kolleger der hed Dava Aragon og Bob Smith og de kunne det der med mønstre: deres software kan læse håndskrevne addresser på breve og giroblanketter, og gør det over hele verden.

Dem af jer der har leget med OCR ved at det er svært, men Bob og Dave anså OCR af alt andet end håndskrift som et "forlængst løst problem".

En par af de helt centrale kerne i deres algoritmer er beskrevet i et paper man kan finde på Daves mønster-hjemmeside, "A Multi-Layered Corroboration-Based Check Reader".

Gutterne ovre i "Intelligent Character Recognition" gruppen, var de første der brugte kontext til at maskinlæse tekster.

Den ene slags kontext er den simple syntax orienterede: Hvis man har stavet sig igennem "Deres kongelige H..." så er det ret sikkert at resten af det tredje ord er "øjehed" og dermed kan man forsøge at finde en konfidens for den teori istedet for at stave sig igennem hvert bogstav.

Den næste slags kontext er database-kontext. Hvis vi har læst "4" som det først ciffer i postnummeret og fundet ud af at bynavnet starter med 'S' og indeholder et 'æ', så er vi allerede meget lange hen ad vejen sikker på at vi er på vej til Skælskør. Dette kendes idag fra indtastning på GPS kort.

Den tredje slags kontext er "A second opinion" som Bob kaldte det: Hvis man har en OCR engine der er baseret på topologi og en der er baseret på neurale netværk, så er de ikke altid enige. Den ene siger f.eks "70% chance for '7', 30% chance for '1'" og mens den anden mener at der er "60% chance for '1', 20% chance for '7' og 20% chance for '4'".

Hvis man har et passende stort sæt af træningsdata, kan man bygge en covarians matrice for de to OCR engines og så bliver resultatet pludselig en faktor 10 bedre, for den en engine giver input til hvad den anden ikke kunne bestemme sig for og omvendt.

Opgaven er kort og godt at bruge sådanne metoder til at filtrere spam.

Den første variant kunne være at køre både en ren bayes algoritme og spamass, og så bygge en 2-D covarians matrice til beslutte sig efter.

Det næste niveau ville være at klassificere formatet inden man fodrer bayes algoritmen, således at vores covarians får en dimension mere, men til gengæld kun bliver sparsomt udfyldt.

Endelig ville det muligvis give mening at identificere sproget.

Go for it!

phk

PS: men lad nu være med at skrive det i PERL!

Kommentarer (9)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#6 Thomas Ammitzbøll-Bach

Jeg hørte en sjov ide fra en elektronikmand: Brug common mode rejection. Det er det, man gør i balancede, parsnoede kabler.

Ideen er, at du har to email-adresser, du bruger lige meget: Begge findes på din webside, hveranden mailingliste, du tilmelder dig, bruger du den ene, hveranden den anden.

Alle de mails, der kommer ind på begge adresser er common mode, altså støj, altså spam.

Jeg ved ikke, om det holder, men jeg har grint længe af ideen.

Thomas

  • 0
  • 0
#8 Anonym

Apropros statistisk mønstergenkendelse kunne det være interessant at høre om der er andre v2'ere, som til dagligt har fingrene nede i dette ifm. dataanalyse, diskrimination etc. - evt. inden for nye spændende applikationsområder, som måske ikke umiddelbart synes oplagte ?

Arbejder selv til dagligt med området indenfor machine vision baseret kvalitetskontrol.

  • 0
  • 0
#9 Henrik Liliendahl Sørensen

Jeg har anvendt sådanne metoder i forbindelse med forbedring af datakvalitet.

Hvis man skal koble 2 datasæt uden fælles unikke nøgler og i stedet skal anvende navne, adresser, telefonnumre osv med forskellige stavemåder, opsætning og fremkomst, og denne proces løbende skal gentages med forskellige datasæt, kan man gøre følgende:

Der opdeles i en A gruppe med sikre positive automatiske match, en C gruppe med sikre negative automatiske match og så en B gruppe med dubiøse match. B gruppen gennemgås manuelt, og dette resulterer i nogle positive og negative valg. Mønstre og frekvens af disse valg kan så indgå i den næste automatiske match. Herved reduceres B gruppen – som er den som koster mandskab - over tid.

  • 0
  • 0
Log ind eller Opret konto for at kommentere