Aceasta este comanda dbacl care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS
PROGRAM:
NUME
dbacl - un clasificator bayesian digramic pentru recunoașterea textului.
REZUMAT
dbacl [-01dvnirmwMNDXW] [-T tip ] -l categorie [-h mărimea] [-H gsize] [-X decim] [-q
calitate] [-w max_order] [-e deftok] [-O on-line] [-L măsura] [-g regex] ...
[FIŞIER]...
dbacl [-vnimNRX] [-h mărimea] [-T tip] -c categorie [-c categorie]... [-f păstra]... [FIȘIER]...
dbacl -V
ÎNSCRIERI
dbacl este un clasificator bayesian de text și e-mail. Când utilizați -l comuta, învață un corp
de text și produc un fișier numit categorie care rezumă textul. Când utilizați -c
comutator, compară un flux de text de intrare cu orice număr de categorie fișiere și ieșiri
numele celui mai apropiat potrivire sau, opțional, diferite scoruri numerice explicate mai jos.
În timp ce această pagină de manual este concepută ca referință, există mai multe tutoriale și
documente pe care le puteți citi pentru a obține informații de specialitate. Documentație specifică despre
proiectarea dbacl iar modelele statistice pe care le folosește pot fi găsite în dbacl.ps. Pentru o
prezentare generală de bază a clasificării textului folosind dbacl, vezi tutorial.html. Un tutorial însoțitor
orientat spre filtrarea e-mailului este email.html. Dacă întâmpinați probleme la accesarea dbacl la
clasificați în mod fiabil, citiți is_it_working.html. De asemenea, secțiunea UTILIZARE a acestei pagini de manual
are cateva exemple.
/usr/share/doc/dbacl/dbacl.ps
/usr/share/doc/dbacl/tutorial.html
/usr/share/doc/dbacl/email.html
/usr/share/doc/dbacl/is_it_working.html
dbacl folosește un model de limbaj de entropie maximă (divergență minimă) construit cu respect
la o măsură de referință grafică (jetonele necunoscute sunt prezise din diagrame, adică perechi de
litere). Practic, asta înseamnă că a categorie este construit din jetoane în
set de antrenament, în timp ce jetoanele nevăzute anterior pot fi prezise automat din lor
scrisori. Un simbol aici este fie un cuvânt (fragment), fie o combinație de cuvinte (fragmente),
selectate în funcție de diverse comutatoare. Învățarea funcționează aproximativ prin modificarea simbolului
probabilități până când datele de antrenament sunt cel mai puțin surprinzătoare.
EXIT STAREA
Convențiile normale de ieșire din shell nu sunt respectate (îmi pare rău!). Când utilizați -l comandă
formă, dbacl returnează zero la succes, diferit de zero dacă apare o eroare. Când utilizați -c formă,
dbacl returnează un număr întreg pozitiv corespunzător lui categorie cu cel mai înalt posterior
probabilitate. În caz de egalitate, se alege prima categorie cea mai probabilă. Dacă o eroare
apare, dbacl returnează zero.
DESCRIERE
Când utilizați -l formular de comanda, dbacl învață o categorie când i se oferă unul sau mai multe nume de FIȘIER,
care ar trebui să conțină text ASCII lizibil. Dacă nu este dat niciun FIȘIER, dbacl învață de la STDIN. Dacă
FILE este un director, este deschis și toate fișierele sale sunt citite, dar nu și subdirectoarele.
Rezultatul este salvat în fișierul binar numit categorie, și înlocuiește complet orice
conţinuturile anterioare. Ca comoditate, dacă variabila de mediu DBACL_PATH conține a
director, atunci acesta este adăugat la calea fișierului, cu excepția cazului în care categorie începe cu „/” sau a
'.'.
Se presupune că textul introdus pentru învățare este text simplu nestructurat în mod implicit. Aceasta este
nu este potrivit pentru învățarea e-mailului, deoarece e-mailul conține diverse codificări de transport și
instrucțiuni de formatare care pot reduce eficiența clasificării. Trebuie să utilizați -T
comuta in acest caz astfel incat dbacl știe că ar trebui să efectueze decodarea și filtrarea MIME
și HTML după caz. Valorile de comutare adecvate sunt „-T e-mail” pentru introducerea e-mailului RFC2822,
„-T html” pentru introducerea HTML, „-T xml” pentru introducerea în stil XML generic și „-T textul” este
format implicit de text simplu. Există și alte valori ale -T comutator care permite, de asemenea, bine
reglarea capacităților de decodare.
Când utilizați -c formular de comanda, dbacl încearcă să clasifice textul găsit în FILE, sau
STDIN dacă nu este dat FILE. Fiecare posibil categorie trebuie dat separat și ar trebui să fie
numele de fișier al unui corpus de text învățat anterior. Ca o comoditate, dacă variabila
DBACL_PATH conține un director, acesta este adăugat la fiecare cale de fișier care nu pornește
cu un „/” sau un „.”. Rezultatul vizibil al clasificării depinde de combinație
de întrerupătoare suplimentare utilizate. Dacă nu este utilizat niciun comutator, atunci nu este afișată nicio ieșire pe STDOUT. In orice caz,
dbacl produce întotdeauna un cod de ieșire care poate fi testat.
Pentru a vedea o ieșire pentru o clasificare, trebuie să utilizați cel puțin unul dintre -v,-U,-n,-N,-D,-d
comutatoare. Uneori, ele pot fi utilizate în combinație pentru a produce o variație naturală a
ieșirile lor individuale. Uneori, dbacl produce, de asemenea, avertismente pe STDERR, dacă este cazul.
-v comutatorul emite numele celei mai bune categorii dintre toate opțiunile oferite.
-U comutatorul emite numele celei mai bune categorii urmat de un procent de încredere.
În mod normal, acesta este comutatorul pe care doriți să îl utilizați. Un procent de 100% înseamnă asta dbacl
este sigur de alegerea sa, în timp ce un procent de 0% înseamnă că o altă categorie este egală
probabil. Aceasta nu este probabilitatea modelului, ci măsoară cât de clară este clasificarea
este și poate fi folosit pentru a marca clasificări nesigure (de exemplu, dacă încrederea este de 25% sau mai puțin).
-N switch tipărește numele fiecărei categorii urmat de probabilitatea (posterior) a acesteia, exprimată
ca procent. Procentajele se însumează întotdeauna la 100%. Acest lucru este intuitiv, dar numai valoros
dacă documentul clasificat conține o mână de jetoane (zece sau mai puțin). În comun
în cazul în care mai multe jetoane, probabilitățile sunt întotdeauna extrem de aproape de 100% și 0%.
-n switch tipărește fiecare nume de categorie urmat de logaritmul negativ al acesteia
probabilitate. Acest lucru este echivalent cu utilizarea -N comutator, dar mult mai util. Cel mai mic
numărul dă cea mai bună categorie. O formă mai convenabilă este să folosiți ambele -n si -v care
tipărește numele fiecărei categorii, urmat de entropia încrucișată și de numărul de jetoane analizate.
Entropia încrucișată măsoară (în biți) rata medie de compresie care este realizabilă,
sub modelul de categorie dat, pe simbol de text introdus. Dacă le folosești pe toate trei -n,-v,-X
apoi este scoasă o valoare suplimentară pentru fiecare categorie, reprezentând un fel de valoare p pentru fiecare
scorul categoriei. Aceasta indică cât de tipic este scorul în comparație cu antrenamentul
documente, dar funcționează numai dacă -X comutatorul a fost folosit în timpul învățării și numai pentru unii
tipuri de modele (ex. e-mail). Aceste valori p sunt distribuite uniform și independente
(dacă categoriile sunt independente), deci pot fi combinate folosind testul chi pătrat al lui Fisher pentru a
obțineți valori p compozite pentru grupări de categorii.
-v si -X comutatoarele imprimă împreună fiecare nume de categorie urmat de un detaliat
descompunerea scorului categoriei, luată în considerare (rata de divergență + entropia Shannon
rata )* număr de simboluri @ valoare p. Din nou, acest lucru funcționează doar în unele tipuri de modele.
-v si -U comutatoarele imprimă fiecare nume de categorie urmat de o descompunere a
scor categorie în ( rata de divergență + rata de entropie shannon # variația scorului )* simbol
conta.
-D switch tipărește textul introdus așa cum a fost modificat intern de dbacl anterior
tokenizare. De exemplu, dacă un document de e-mail codificat MIME este clasificat, atunci acesta
tipărește textul decodat care va fi efectiv tokenizat și clasificat. Acest comutator este
util în principal pentru depanare.
-d comutați jetoanele de descărcare și scorurile în timp ce sunt citite. Este util pentru
depanare sau dacă doriți să creați reprezentări grafice ale clasificării. A
explicația detaliată a rezultatelor depășește scopul acestei pagini de manual, dar este
simplu dacă ați citit dbacl.ps. Variațiile posibile includ -d Împreună cu -n
or -N.
Clasificarea se poate face cu una sau mai multe categorii în principiu. Când doi sau mai mulți
sunt utilizate categorii, se utilizează probabilitatea posterioară bayesiană, dat fiind textul de intrare,
cu o repartizare prealabilă uniformă pe categorii. Pentru alte opțiuni de anterior, consultați
utilitate însoțitoare bayesol(1). Când se utilizează o singură categorie, se poate face clasificarea
prin compararea scorului cu un prag. În practică însă, rezultate mult mai bune sunt
obtinut cu mai multe categorii.
Învățarea și clasificarea nu pot fi amestecate pe aceeași invocare a comenzii, oricum există
fără probleme de blocare și separat dbacl procesele pot opera simultan cu evidente
rezultate, deoarece operațiunile cu fișiere sunt concepute pentru a fi atomice.
În cele din urmă, rețineți că dbacl nu gestionează corpurile dumneavoastră de documente sau computerele dumneavoastră
categorii și, în special, nu vă permite să extindeți un fișier de categorie existent
cu acte noi. Acest lucru este spre deosebire de diferitele filtre de spam actuale, care pot învăța noi
e-mailuri progresiv. Această limitare a dbacl se datorează parțial procedurii neliniare
utilizat în algoritmul de învățare și parțial o dorință de flexibilitate sporită.
Puteți simula efectul învățării incrementale salvând documentele de antrenament în
arhive și adăugând la aceste arhive în timp, reînvățând periodic de la zero.
Învățarea este de fapt mai rapidă dacă aceste arhive sunt comprimate și decomprimate din mers
când e nevoie. Păstrând controlul asupra arhivelor dvs., nu puteți pierde niciodată informațiile din interior
categoriile dvs. și puteți experimenta cu ușurință diferite comutatoare sau tokenizări sau
seturi de documente de instruire, dacă doriți.
SECUNDAR COMUTATOARE
În mod implicit, dbacl clasifică textul introdus ca întreg. Cu toate acestea, atunci când utilizați -f opțiune,
dbacl poate fi folosit pentru a filtra fiecare linie de intrare separat, imprimând numai acele linii care
se potrivesc cu unul sau mai multe modele identificate prin păstra (utilizați numele sau numărul categoriei pentru a vă referi la a
categorie). Acest lucru este util dacă doriți să filtrați unele linii, dar rețineți că dacă liniile
sunt scurte, atunci rata de eroare poate fi mare.
-e,-w,-g,-j comutatoarele sunt utilizate pentru selectarea unei scheme de tokenizare adecvate. A
token este un cuvânt sau fragment de cuvânt sau o combinație de cuvinte sau fragmente. Forma jetoanelor
este importantă deoarece formează baza modelelor de limbaj utilizate de dbacl. -e
switch selectează o schemă de tokenizare predefinită, care este rapidă, dar limitată. The -w
switch specifică jetoane compuse derivate din -e intrerupator. De exemplu, „-e alnum -w 2”
înseamnă că jetoanele ar trebui să fie fragmente de cuvinte alfanumerice combinate în perechi suprapuse
(bigrame). Cand -j comutatorul este utilizat, toate jetoanele sunt convertite în litere mici, ceea ce
reduce numărul de jetoane posibile și, prin urmare, consumul de memorie.
În cazul în care -g este utilizat comutatorul, puteți specifica complet cum ar trebui să arate jetoanele
folosind o expresie regulată. Mai multe -g comutatoarele pot fi folosite pentru a construi complexe
Schemele de tokenizare și parantezele din cadrul fiecărei expresii pot fi folosite pentru a selecta
fragmente și combinați-le în n-grame. Costul unei astfel de flexibilități este redus
clasificare si viteza de invatare. Când experimentați cu scheme de tokenizare, încercați să utilizați
il -d or -D comută în timp ce învață sau clasifică, deoarece vor tipări jetoanele
în mod explicit, astfel încât să puteți vedea ce fragmente de text sunt preluate sau pierdute. Pentru regulat
sintaxa expresiei, vezi regex(7).
-h si -H comutatoarele reglează cantitatea de memorie dbacl poate folosi pentru învățare. Text
clasificarea poate folosi multă memorie, iar implicit dbacl se limitează chiar și la
cheltuiala acurateței învățării. În multe cazuri, dacă se atinge o limită, va apărea un mesaj de avertizare
fi tipărit pe STDERR cu câteva sfaturi.
Când reînvățați aceeași categorie de mai multe ori, se poate obține o accelerare semnificativă prin
folosind -1 comutator, deoarece acest lucru permite citirea probabilităților învățate anterior
categorie și reutilizate.
Rețineți că acuratețea clasificării depinde în primul rând de cantitatea și calitatea
mostre de antrenament, și apoi numai pe cantitatea de ajustare.
EXIT STAREA
Când utilizați -l formular de comanda, dbacl returnează zero la succes. Când utilizați -c formă,
dbacl returnează un număr întreg pozitiv (1,2,3...) corespunzător lui categorie cu cel mai înalt
probabilitate posterioară. În caz de egalitate, se alege prima categorie cea mai probabilă. Daca un
apare o eroare, dbacl returnează zero.
OPŢIUNI
-0 Când învață, previne preîncărcarea greutății. În mod normal, dbacl verifică dacă categoria
fișierul există deja și, dacă da, încearcă să folosească greutățile existente ca punct de plecare
punct. Acest lucru poate accelera dramatic învățarea. Dacă -0 comutatorul (zero) este setat,
apoi dbacl se comportă ca și cum nu ar exista deja niciun fișier de categorie. Acest lucru este util în principal pentru
testarea. Acest comutator este acum activat în mod implicit, pentru a proteja împotriva derivării greutății
ceea ce poate reduce acuratețea multor iterații de învățare. Utilizare -1 pentru a forța
preîncărcare.
-1 Forțați preîncărcarea greutății dacă fișierul de categorie există deja. Vezi discuția despre
-0 intrerupator.
-a Adăugați scoruri. Fiecare linie de intrare este scrisă în STDOUT și scorurile dbacl sunt
anexat. Acest lucru este util pentru postprocesare cu bayesol(1). Pentru ușurința
procesare, fiecare linie de intrare originală este indentată de un singur spațiu (pentru a distinge
ele din scorurile anexate) și linia cu scorurile (dacă -n este folosit) este
prefixat cu șirul „scoruri”. Dacă o a doua copie a dbacl trebuie să citească asta
ieșit mai târziu, ar trebui să fie invocat cu -A intrerupator.
-d Descarcă parametrii modelului în STDOUT. În legătură cu -l opțiune, asta
produce un rezumat care poate fi citit de om al modelului de entropie maximă. În legătură cu
il -c opțiunea, afișează contribuția fiecărui jeton la scorul final.
Suprimă toate celelalte ieşiri normale.
-e Selectați clasa de caractere pentru tokenizarea implicită (nu bazată pe regex). În mod implicit,
jetoanele sunt numai șiruri alfabetice. Aceasta corespunde cazului în care deftok is
"alfa". Valori posibile pentru deftok sunt „alpha”, „alnum”, „graph”, „char”, „cef”
și „adp”. Ultimele două sunt tokenizer personalizate destinate mesajelor de e-mail. Vedea
de asemenea isalfa(3). Tokenizerul „char” preia mai degrabă caractere imprimabile individuale
decât jetoanele mai mari și este destinat doar testării.
-f Filtrați fiecare linie de intrare separat, trecând la STDOUT numai liniile care se potrivesc cu
categorie identificat ca păstra. Această opțiune ar trebui utilizată în mod repetat pentru fiecare
categorie care trebuie păstrat. păstra poate fi fie categorie nume de fișier sau a
întreg pozitiv reprezentând necesarul categorie în aceeași ordine în care apare
linia de comandă.
Liniile de ieșire sunt șters imediat ce sunt scrise. Dacă fișierul de intrare este o conductă
sau dispozitiv de caractere, atunci se încearcă utilizarea modului de buffering de linie, în caz contrar
cu cât este folosită mai eficientă blocarea tampon.
-g Aflați numai caracteristicile descrise de expresia regulată extinsă regex. Acest
înlocuiește metoda implicită de selecție a caracteristicilor (vezi -w opțiune) și învață, pentru fiecare
linie de intrare, numai jetoane construite din concatenarea șirurilor care
potriviți subexpresiile etichetate din cele furnizate regex. Toate subşirurile care
Meci regex în cadrul unui sufix al fiecărei linii de intrare sunt tratate ca caracteristici, chiar dacă
se suprapun pe linia de intrare.
Ca o comoditate opțională, regex poate include sufixul ||xyz care indică
care subexpresii între paranteze ar trebui să fie etichetate. În acest caz, xyz să
constau exclusiv din cifre de la 1 la 9, numerotând exact acele subexpresii care
ar trebui să fie etichetat. Alternativ, dacă nu există paranteze în interior regex, atunci este
a presupus că întreaga expresie trebuie surprinsă.
-h Setați dimensiunea tabelului hash la 2^mărimea elemente. Când utilizați -l opțiune, asta
se referă la numărul total de caracteristici permise în modelul de entropie maximă fiind
învățat. Când utilizați -c opțiunea împreună cu -M comutator și tip multinomial
categorii, aceasta se referă la numărul maxim de caracteristici luate în considerare în timpul
clasificare. Fara -M comutator, această opțiune nu are efect.
-i Modul complet internaționalizat. Forțează utilizarea caracterelor largi în interior, ceea ce
este necesar în unele localități. Acest lucru implică o penalizare notabilă de performanță.
-j Faceți caracteristicile cu majuscule și minuscule. În mod normal, toate caracteristicile sunt convertite în litere mici
în timpul procesării, ceea ce reduce cerințele de stocare și îmbunătățește statisticile
estimări pentru seturi de date mici. Cu această opțiune, este utilizată scrierea cu majuscule inițiale
pentru fiecare caracteristică. Acest lucru poate îmbunătăți acuratețea clasificării.
-m Mapează în mod agresiv categoriile în memorie și le blochează în RAM pentru a preveni
schimb, dacă este posibil. Acest lucru este util atunci când viteza este primordială și memoria este
abundent, de exemplu atunci când se testează clasificatorul pe seturi mari de date.
Blocarea poate necesita relaxarea limitelor utilizatorilor cu limită(1). Întrebați sistemul dvs
administrator. Atenție când utilizați -m comuta împreună cu -o comutator, ca numai
un proces dbacl trebuie să învețe sau să clasifice la un moment dat pentru a preveni coruperea fișierelor. Dacă
nu are loc nicio învățare, atunci -m comutatorul pentru clasificare este întotdeauna sigur de utilizat.
Vezi și discuția pentru -o intrerupator.
-n Imprimați scorurile pentru fiecare categorie. Fiecare scor este produsul a două numere
entropia încrucișată și complexitatea textului introdus sub fiecare model. Înmulțit
împreună, ele reprezintă log probabilitatea ca intrarea să semene cu modelul. La
vezi aceste numere separat, folosește și -v opțiune. În legătură cu -f
opțiunea, oprește filtrarea, dar tipărește fiecare linie de intrare însoțită de o listă de scoruri
pentru acea linie.
-q Selectați calitate de învățare, unde calitate poate fi 1,2,3,4. Valorile mai mari durează mai mult
pentru a învăța și ar trebui să fie puțin mai precis. Implicit calitate este 1 dacă
fișierul categorie nu există sau greutățile nu pot fi preîncărcate și 2 în caz contrar.
-o Când învață, citește/scrie numărări parțiale de jetoane, astfel încât acestea să poată fi reutilizate. În mod normal,
fișierele de categorie sunt învățate exact din datele de intrare date și nu conțin
informații străine. Când această opțiune este în vigoare, există câteva informații suplimentare
salvate în fișier on-line, după ce toate intrările au fost citite. Aceste informații pot fi recitite
data viitoare când are loc învățarea, pentru a continua acolo unde a rămas setul de date anterior
oprit. Dacă on-line nu există, este creat. Dacă on-line exista, se citeste inainte
învățare și actualizate ulterior. Fișierul este de aproximativ 3 ori mai mare (la
cel puţin) decât cei învăţaţi categorie.
In dbacl, actualizările fișierelor sunt atomice, dar dacă utilizați -o comutator, două sau mai multe
procesele nu ar trebui să învețe simultan, deoarece un singur proces va scrie o durată
categorie și depozit de memorie. The -m comutatorul poate accelera, de asemenea, învățarea online, dar
ferește-te de posibila corupție. Un singur proces ar trebui să citească sau să scrie un fișier. Acest
opțiunea este destinată în primul rând testelor controlate.
-r Aflați numai modelul de referință grafic. Omite învățarea funcțiilor suplimentare în
corpus de text.
-v Mod verbal. Când învățați, imprimați detaliile calculului, când
clasificare, tipăriți numele celui mai probabil categorie. În legătură cu
il -n opțiunea, tipărește scorurile ca un produs explicit al entropiei încrucișate și
complexitatea.
-w Selectați caracteristicile implicite de până la n-grame max_order. Acest lucru este incompatibil cu
il -g opțiune, care are întotdeauna prioritate. Daca nu -w or -g sunt date optiuni,
dbacl presupune -w 1. Rețineți că n-gramele pentru n mai mare de 1 nu se încadrează în linie
se rupe implicit. The -S comutatorul permite deplasarea liniei.
-x Setează probabilitatea decimarii la 1 - 2^(-decim). Pentru a reduce cerințele de memorie când
Învățare, unele intrări sunt sărite aleatoriu și doar câteva sunt adăugate la model.
Comportamentul exact depinde de aplicabil -T opțiunea (implicit este -T "text"). Când
tipul nu este „e-mail” (de exemplu, „text”), apoi sunt adăugate funcții de intrare individuale cu
probabilitate 2^(-decim). Când tipul este „e-mail”, atunci mesajele de intrare completă sunt
adăugat cu probabilitate 2^(-decim). În cadrul fiecărui astfel de mesaj, toate caracteristicile sunt
folosit.
-A Așteptați-vă intrări indentate și scoruri. Cu acest comutator, dbacl se așteaptă ca liniile de intrare să fie
indentat de un singur caracter de spațiu (care este apoi sărit). Rânduri care încep cu
orice alt personaj este ignorat. Acesta este omologul -a comuta deasupra.
Când este utilizat împreună cu -a intrerupator, dbacl scoate liniile sărite așa cum sunt,
și reintroduce spațiul din partea din față a fiecărei linii de intrare procesate.
-D Ieșire de depanare a imprimării. Nu utilizați în mod normal, dar poate fi foarte util pentru afișarea
enumerați caracteristicile preluate în timp ce învățați.
-H Permite tabelului hash să crească până la maximum 2^gsize elemente în timpul învățării.
Mărimea inițială este dată de -h opțiune.
-L Selectați măsura de referință grafică pentru tranzițiile de caractere. The măsura poate fi
unul de „uniform”, „dirichlet” sau „maxent”. Implicit este „uniform”.
-M Forță calcule multinomiale. Când învățați, forțează caracteristicile modelului să fie
tratate multinomial. La clasificare, corectează scorurile de entropie pentru a reflecta
probabilități multinomiale (aplicabil numai modelelor de tip multinomial, dacă există).
Scorurile vor fi întotdeauna mai mici, deoarece ordonarea caracteristicilor se pierde.
-N Tipăriți probabilități posterioare pentru fiecare categorie. Aceasta presupune furnizarea
categoriile formează o listă exhaustivă de posibilităţi. În legătură cu -f
opțiunea, oprește filtrarea, dar tipărește fiecare linie de intrare înaintea unui rezumat al
distribuția posterioară pentru acea linie.
-R Includeți o categorie suplimentară pentru text pur aleatoriu. Categoria se numește „aleatorie”.
Are sens doar atunci când folosești -c opțiune.
-S Activați deplasarea liniei. Acest lucru este util împreună cu -w opțiunea de a permite n-grame
pentru n > 1 pentru a ignora rupturile de linie, astfel încât un simbol complex poate continua după sfârșitul
linia. Acest lucru nu este recomandat pentru e-mail.
-T Specificați formatul de text nestandard. În mod implicit, dbacl presupune că textul introdus este a
fișier text pur ASCII. Aceasta corespunde cazului în care tip este „text”.
Există mai multe tipuri și subtipuri care pot fi folosite pentru a curăța textul introdus
jetoane străine înainte ca învățarea sau clasificarea efectivă să aibă loc. Fiecare (sub)tip
pe care doriți să îl utilizați trebuie să fie indicat cu un separat -T opțiune pe linia de comandă,
și implică automat tipul corespunzător.
Tipul „text” este pentru text simplu nestructurat. Nu se efectuează curățare. Aceasta este
implicit dacă nu sunt date tipuri pe linia de comandă.
Tipul „e-mail” este pentru fișiere de intrare în format mbox sau e-mail-uri unice RFC822. Anteturi
sunt recunoscute și majoritatea sunt omise. Pentru a include antete standard RFC822 suplimentare
(cu excepția antetelor de urmărire), utilizați subtipul „email:headers”. Pentru a include urma
antete, utilizați subtipul „email:headers”. Pentru a include toate anteturile în e-mail, utilizați
subtipul „email:xheaders”. Pentru a sări peste toate anteturile, cu excepția subiectului, utilizați
„email:noheaders”. Pentru a scana atașamentele binare pentru șiruri, utilizați „email:atts”
subtip.
Când tipul „e-mail” este în vigoare, marcajul HTML este eliminat automat din text
atașamente, cu excepția atașamentelor text/pure. Pentru a elimina, de asemenea, marcajul HTML din simplu
atașamente text, utilizați „email:noplain”. Pentru a preveni eliminarea marcajului HTML din tot textul
atașamente, utilizați „email:plain”.
Tipul „html” este pentru eliminarea marcajului HTML (între și etichete) și
textul înconjurător. Rețineți că, dacă tipul „e-mail” este activat, atunci „html” este
activat automat numai pentru atașamentele de mesaje compatibile.
Tipul „xml” este ca „html”, dar nu onorează și , și nu
interpretați etichetele (deci aceasta ar trebui să fie numită mai corect eliminarea „marcare unghiulară” și
nu are nimic de-a face cu semantica XML actuală).
Când „html” este activat, majoritatea atributelor de marcare se pierd (pentru valorile „mai” aproape
pentru toti'). Subtipul „html:links” obligă URL-urile linkurilor să fie analizate și învățate,
care altfel ar fi ignorat. Subtipul „html:alt” forțează analizarea
text alternativ în atributele ALT și diverse alte etichete. „html:scripts”
subtipul forțează analizarea scripturilor, „html:styles” forțează analizarea stilurilor,
„html:forms” forțează analizarea valorilor formularului, în timp ce „html:comments” forțează analizarea
Comentarii HTML.
-U Print (neambiguitate). Când este utilizat împreună cu -v comuta, imprimă scoruri
urmate de abaterile lor standard empirice. Când este folosit singur, imprimă cel mai bine
categorie, urmată de o probabilitate estimată ca această categorie de alegere să fie
lipsit de ambiguitate. Mai precis, probabilitatea măsoară lipsa de suprapunere a CLT
intervale de încredere pentru fiecare scor de categorie (dacă există suprapunere, atunci există
ambiguitate).
Această probabilitate estimată poate fi folosită ca indicator „nesigur”, de exemplu, dacă este estimată
probabilitatea este mai mică de 50%. În mod oficial, un scor de 0% înseamnă că o altă categorie este
la fel de probabil să se aplice la intrare, iar un scor de 100% înseamnă că nu există altă categorie
este probabil să se aplice la intrare. Rețineți că acest tip de încredere nu are legătură cu
il -X intrerupator. De asemenea, estimarea probabilității este de obicei scăzută dacă documentul este
scurt, sau dacă mesajul conține multe jetoane care nu au mai fost văzute până acum
(se aplică numai măsurării digramice uniforme).
-V Tipăriți numărul versiunii programului și ieșiți.
-W La fel ca -w, dar împiedică caracteristicile să se încadreze în linii noi. Vezi descrierea lui -w.
-X Tipăriți încrederea în scorul calculat pentru fiecare categorie, atunci când sunt utilizate împreună
cu -n or -N intrerupator. Pregătește modelul pentru scorurile de încredere, atunci când este utilizat cu
il -l intrerupator. Încrederea este o estimare a caracterului tipic al scorului,
presupunând ipoteza nulă că categoria dată este corectă. Când este utilizat cu
-v comutator singur, factorizează scorul ca divergență empirică plus shannon
entropia, înmulțită cu complexitatea, în această ordine. The -X comutatorul nu este acceptat în
toate modelele posibile și afișează un procent de „0.0” dacă nu poate fi calculat.
Rețineți că pentru documentele necunoscute, este destul de comun să aveți confidențe apropiate
zero.
UTILIZARE
Pentru a crea două fișiere de categorie în directorul curent din două fișiere text ASCII numite
Mark_Twain.txt și, respectiv, William_Shakespeare.txt, tastați:
% dbacl -l twain Mark_Twain.txt
% dbacl -l shake William_Shakespeare.txt
Acum puteți clasifica textul introdus, de exemplu:
% ecou „bună” | dbacl -v -c twain -c agitare
doi
% ecou „a fi sau a nu fi” | dbacl -v -c twain -c agitare
agita
Rețineți că -v opțiunea cel puțin este necesară, altfel dbacl nu tipărește nimic.
Valoarea returnată este 1 în primul caz, 2 în al doilea.
% ecou „a fi sau a nu fi” | dbacl -v -N -c twain -c agitare
două 22.63% shake 77.37%
% ecou „a fi sau a nu fi” | dbacl -v -n -c twain -c agitare
două 7.04 * 6.0 agitare 6.74 * 6.0
Aceste invocari sunt echivalente. Numerele 6.74 și 7.04 reprezintă cât de aproape
jetonul mediu este pentru fiecare categorie, iar 6.0 este numărul de jetonuri observate. Dacă doriți
pentru a imprima o valoare simplă de încredere împreună cu cea mai bună categorie, înlocuiți -v cu -U.
% ecou „a fi sau a nu fi” | dbacl -U -c twain -c agitare
agitare # 34%
Rețineți că adevărata probabilitate a categoriei agita față de categorie doi este de 77.37%, dar
calculul este oarecum ambiguu, iar 34% este încrederea din 100% că
calculul este corect din punct de vedere calitativ.
Să presupunem că un fișier document.txt conține linii de text în limba engleză intercalate cu linii de zgomot. La
filtrați liniile de zgomot din liniile englezești, presupunând că aveți o categorie existentă
scuturați spune, tastați:
% dbacl -c shake -f shake -R document.txt > document.txt_eng
% dbacl -c shake -f random -R document.txt > document.txt_rnd
Rețineți că calitatea rezultatelor va varia în funcție de cât de bine se agită categoriile
și aleatoriu reprezintă fiecare linie de intrare. Uneori este util să vezi posteriorul
probabilități pentru fiecare linie fără filtrare:
% dbacl -c shake -f shake -RN document.txt > document.txt_probs
Acum puteți postprocesa probabilitățile posterioare pentru fiecare linie de text cu alta
script, pentru a reproduce o regulă de decizie bayesiană arbitrară la alegere.
În cazul special a exact două categorii, procedura optimă de decizie bayesiană poate
se implementează pentru documente astfel: lit p1 fi probabilitatea anterioară ca intrarea
textul este clasificat ca categoria1. În consecință, probabilitatea anterioară de clasificare ca
categoria2 este 1 - p1. Lăsa u12 fie costul clasificării greșite a categoria1 introduceți text ca
aparținând categoria2 si invers pt u21. Presupunem că nu există niciun cost pentru clasificare
corect. Apoi următoarea comandă implementează decizia bayesiană optimă:
% dbacl -n -c categoria1 -c categoria2 | awk '{ if($2 * p1 * u12 > 4 USD * (1 - p1) * u21) {
imprima $1; } else { print $3; } }'
dbacl poate fi folosit și împreună cu procmail(1) pentru a implementa un Bayesian simplu
sistem de clasificare a e-mailurilor. Să presupunem că e-mailurile primite ar trebui să fie livrate automat
la unul dintre cele trei foldere de e-mail situate în $MAILDIR și numite muncă, personal și spam-.
Inițial, acestea trebuie create și completate cu exemple de e-mailuri adecvate. A crontab(1)
fișierul poate fi folosit pentru a învăța cele trei categorii o dată pe zi, de ex
CATS=$HOME/.dbacl
5 0 * * * dbacl -T email -l $CATS/work $MAILDIR/work
10 0 * * * dbacl -T email -l $CATS/personal $MAILDIR/personal
15 0 * * * dbacl -T email -l $CATS/spam $MAILDIR/spam
Pentru a livra automat fiecare e-mail primit în folderul corespunzător, următoarele
procmailrc(5) fragment de rețetă ar putea fi utilizat:
CATS=$HOME/.dbacl
# rulați clasificatorul de spam
:0 c
YAY=| dbacl -vT e-mail -c $CATS/work -c $CATS/personal -c $CATS/spam
# trimite la căsuța poștală corespunzătoare
: 0:
* ? test -n „$YAY”
$MAILDIR/$YAY
: 0:
$DEFAULT
Uneori, dbacl va trimite e-mailul la căsuța poștală greșită. În acest caz, clasificarea greșită
mesajul trebuie eliminat din destinația greșită și plasat în căsuța poștală corectă.
Eroarea va fi corectată data viitoare când mesajele dvs. vor fi învățate. Dacă este lăsat în
categorie greșită, dbacl va învăța statisticile corpus greșite.
Caracteristicile implicite de text (jetoane) citite de dbacl sunt șiruri pur alfabetice, care
minimizează cerințele de memorie, dar poate fi nerealist în unele cazuri. Pentru a construi modele
pe baza jetoanelor alfanumerice, utilizați -e intrerupator. Exemplul de mai jos folosește și opționalul
-D comutator, care tipărește o listă de jetoane reale găsite în document:
% dbacl -e alnum -D -l twain Mark_Twain.txt | Mai puțin
De asemenea, este posibil să se suprascrie metoda implicită de selecție a caracteristicilor utilizate pentru a învăța
model de categorie prin intermediul expresiilor regulate. De exemplu, următoarele dublează
metoda implicită de selecție a caracteristicilor în localitatea C, fiind mult mai lentă:
% dbacl -l twain -g '^([[:alpha:]]+)' -g '[^[:alpha:]]([[:alpha:]]+)' Mark_Twain.txt
Categoria două care se obține depinde doar de cuvintele alfabetice unice din text
fișierul Mark_Twain.txt (și statistici grafice calculate pentru predicție). Pentru o secundă
exemplu, următoarea comandă construiește un model Markovian netezit (cuvânt bigram) care
depinde de perechile de cuvinte consecutive din fiecare linie (dar perechile nu se pot încadra pe o linie
pauză):
% dbacl -l twain2 -g '(^|[^[:alpha:]])([[:alpha:]]+)||2' -g
„(^|[^[:alpha:]])([[:alpha:]]+)[^[:alpha:]]+([[:alpha:]]+)||23” Mark_Twain.txt
Mai general, modelele n-grame bazate pe linii pentru toate comenzile (până la 7) pot fi construite într-un mod similar
cale. Pentru a construi modele bazate pe paragrafe, ar trebui să reformatați corpurile de intrare cu
Wow(1) sau sete(1) pentru a obține câte un alineat pe rând. Dimensiunea liniei este limitată de disponibil
memorie, dar rețineți că performanța regex se va degrada rapid pentru linii lungi.
PERFORMANȚĂ
Ipoteza de bază a învățării statistice este că un număr relativ mic de
documentele de instruire pot reprezenta un set mult mai mare de documente de intrare. Astfel în lung
rulați, învățarea se poate opri fără un impact grav asupra acurateței clasificării. In timp ce
nu este adevărată în realitate, această presupunere este surprinzător de exactă pentru probleme precum e-mailul
filtrare. În practică, aceasta înseamnă că un corpus bine ales de ordinul a zece mii
documentele sunt suficiente pentru rezultate extrem de precise de ani de zile. Învățare continuă după
o astfel de masă critică are ca rezultat randamente descrescătoare. Desigur, atunci când lumea reală de intrare
tiparele documentelor se schimbă dramatic, puterea de predicție a modelelor se poate pierde. La
la celălalt capăt, câteva sute de documente dau deja rezultate acceptabile în majoritatea cazurilor.
dbacl este puternic optimizat pentru cazul clasificărilor frecvente, dar loturilor rare
învăţare. Acesta este optimul pe termen lung descris mai sus. In conditii ideale, dbacl poate să
clasifică o sută de e-mailuri pe secundă pe hardware low-end (500Mhz Pentium III). Învăţare
viteza nu este mult mai mică, dar durează mult mai mult pentru documentele mari
colectii din diverse motive. Când utilizați -m comuta, structurile de date sunt
mapat agresiv în memorie, dacă este posibil, reducând cheltuielile generale atât pentru I/O, cât și pentru memorie
alocări.
dbacl își aruncă intrarea cât mai curând posibil și nu are limite pentru documentul de intrare
mărimea. Atât clasificarea, cât și viteza de învățare sunt direct proporționale cu numărul de
jetoane în intrare, dar învățarea are nevoie și de un pas de optimizare neliniară care durează
timp proporțional cu numărul de jetoane unice descoperite. La momentul scrierii, dbacl is
unul dintre cele mai rapide filtre de e-mail open source având în vedere scenariul optim de utilizare, dar utilizări
mai multă memorie pentru învățare decât alte filtre.
MULTIPLU PROCESELE AND DATE CORUPŢIE
Când salvați fișiere de categorie, dbacl mai întâi scrie un fișier temporar în aceeași locație,
și îl redenumește ulterior. Dacă apare o problemă sau un accident în timpul învățării, categoria veche
prin urmare, fișierul este lăsat neatins. Acest lucru asigură că categoriile nu pot fi niciodată corupte, nu
contează câte procese încearcă să învețe sau să clasifice simultan și înseamnă că este valabil
categoriile sunt disponibile pentru clasificare în orice moment.
Când utilizați -m comutator, conținutul fișierului este mapat în memorie pentru citire și scriere rapidă.
Aceasta, împreună cu -o comutator, este destinat în principal pentru scopuri de testare, atunci când zeci de
mii de mesaje trebuie învățate și notate într-un laborator pentru a fi măsurate dbacl's
precizie. Deoarece nu se încearcă blocarea fișierelor din motive de performanță, corupțiile sunt
posibil, cu excepția cazului în care te asiguri că doar unul dbacl procesul citește sau scrie orice fișier
timp oferit. Acesta este singurul caz (-m și -o împreună) când corupția este posibilă.
MEMORIE UTILIZAȚI
La clasificarea unui document, dbacl încarcă toate categoriile indicate în RAM, deci totalul
memoria necesară este aproximativ suma dimensiunilor fișierelor de categorie plus un mic fix
deasupra capului. Documentul de intrare este consumat în timp ce este citit, deci dimensiunea lui nu contează,
dar liniile foarte lungi pot ocupa spațiu. Când utilizați -m comuta, categoriile sunt citite
folosind mmap(2) după cum este disponibil.
Când învață, dbacl păstrează o structură mare în memorie care conţine multe obiecte care
nu va fi salvat în categoria de ieșire. Dimensiunea acestei structuri este proporțională cu
numărul de jetoane unice citite, dar nu și dimensiunea documentelor de intrare, deoarece acestea sunt
aruncat în timp ce este citit. Ca un ghid aproximativ, această structură este de 4x-5x dimensiunea
fișierul final de categorie care este produs.
Pentru a preveni creșterea necontrolată a memoriei, dbacl alocă implicit o cantitate fixă mică de
memorie pentru jetoane. Când acest spațiu este epuizat, sunt aruncate alte jetoane care au
efectul de denaturare a categoriei învățate, făcând-o mai puțin utilizabilă pe măsură ce se aruncă mai multe jetoane. A
avertismentul este tipărit pe STDERR într-un astfel de caz.
-h comutatorul vă permite să fixați dimensiunea inițială a spațiului de jeton în puteri de 2, adică „-h 17”
înseamnă 2^17 = 131072 de jetoane posibile. Dacă tastați „dbacl -V”, puteți vedea numărul de
octeți necesari pentru fiecare jeton atunci când învață sau clasifică. Înmulțiți acest număr cu
numărul maxim de jetoane posibile pentru a estima memoria necesară pentru învățare. The -H
comutatorul permite dbacl crește automat mesele dacă și când este necesar, până la maximum
specificat. Deci, dacă tastați „-H 21”, atunci dimensiunea inițială va fi dublată în mod repetat dacă
necesar, până la aproximativ două milioane de jetoane unice.
Când învățați cu -X comutator, o mână de documente de intrare sunt, de asemenea, păstrate în RAM
pe tot parcursul.
MEDIUL
DBACL_PATH
Când această variabilă este setată, valoarea ei este adăugată la fiecare categorie nume de fișier care
nu începe cu „/” sau „.”.
SEMNALE
INT Dacă acest semnal este prins, dbacl pur și simplu iese fără a face nicio curățare sau altceva
operațiuni. Acest semnal poate fi trimis adesea apăsând Ctrl-C de pe tastatură. Vedea
stty(1).
HUP, RENUNSA, TERMEN
Dacă unul dintre aceste semnale este prins, dbacl oprește citirea intrării și continuă
funcționarea ca și cum nu ar mai fi fost disponibilă nicio intrare. Acesta este un mod de a renunța cu grație,
dar rețineți că în modul de învățare, un fișier de categorie va fi scris pe baza
intrare incompletă. Semnalul QUIT poate fi trimis adesea apăsând Ctrl- pe butonul
tastatură. Vedea stty(1).
USR1 Dacă acest semnal este captat, dbacl reîncarcă categoriile curente cel mai devreme
oportunitate fezabilă. În mod normal, acest lucru nu este deloc util, dar poate fi deosebit
cazuri, cum ar fi dacă -f comutatorul este invocat împreună cu intrarea dintr-o rulare lungă
conductă.
NOTE
dbacl fișierele de categorie generate sunt în format binar și pot fi sau nu portabile
sistemele care utilizează o arhitectură diferită a ordinii octeților (acest lucru depinde de modul în care dbacl a fost
compilat). The -V comutatorul afișează dacă categoriile sunt portabile sau dacă puteți pur și simplu
experiment.
dbacl nu recunoaște expresii regulate echivalente funcțional și, în acest caz
caracteristicile duplicate vor fi numărate de mai multe ori.
Cu fiecare categorie învățată, opțiunile din linia de comandă care au fost utilizate sunt salvate. Când
clasificare, asigurați-vă că fiecare categorie relevantă a fost învățată cu același set de
opțiunile (regexurile sunt permise să difere), în caz contrar comportamentul este nedefinit. Nu este
trebuie să repetați toate comutatoarele la clasificare.
Dacă primiți multe avertismente de digitizare, atunci încercați să învățați prea multe date simultan,
sau modelul tău este prea complex. dbacl este compilat pentru a economisi memorie prin digitalizarea finală
greutăți, dar puteți dezactiva digitizarea editând dbacl.h și recompilând.
dbacl oferă mai multe tokenizatoare încorporate (vezi -e comutator) cu mai multe pe viitor
versiuni, așa cum le inventează autorul. În timp ce tokenizer-ul implicit poate evolua, nu
tokenizer ar trebui să fie vreodată eliminat, astfel încât să puteți simula întotdeauna anterior dbacl comportament
supus remedierii erorilor și modificărilor arhitecturale.
Estimările de încredere obținute prin intermediul -X switch sunt subestimări, adică sunt mai multe
conservatori decât ar trebui să fie.
Utilizați dbacl online folosind serviciile onworks.net