La figa è di sinistra. Dimostriamolo.
Per prima cosa installiamo un po' di intelligenza artificiale: apt-get install crm115
.
Poi scriviamo due scriptini: uno per classificare:
1 2 3 4 5 6 7 8 9 | #!/usr/bin/crm isolate (:classify_status:) // isolate (:lcr:) /[[:graph:]][-.,:[:alnum:]]*[[:graph:]]?/ { classify (destra.css sinistra.css) (:classify_status:) /:*:lcr:/ output /:*:classify_status:/ } |
...e uno per imparare:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #!/usr/bin/crm -( cat ) isolate (:cat:) isolate (:lcr:) /[[:graph:]][-.,:[:alnum:]]*[[:graph:]]?/ { learn (:*:cat:) /:*:lcr:/ output /Learned.\n/ } alius { output /No need to learn/ } |
Poi creiamo i due file con le categorie:
cssutil -b -r destra.css cssutil -b -r sinistra.css
Scarichiamo un po' di dati per imparare la differenza tra destra e sinistra:
lynx -dump http://www.ilrestodelcarlino.it > carlino.txt lynx -dump http://www.repubblica.it > repubblica.txt lynx -dump http://www.corriere.it > corriere.txt lynx -dump http://www.ilgiornale.it/ > giornale.txt lynx -dump http://www.unita.it/index.asp?sezione_cod=HP > unita.txt lynx -dump http://www.ilmanifesto.it > manifesto.txt lynx -dump http://www.lastampa.it/redazione/default.asp > stampa.txt lynx -dump http://www.liberazione.it/ > liberazione.txt lynx -dump http://www.marxismo.net/ > marxismo.txt
Uno script per vedere quanto impara:
1 2 3 4 5 6 | #!/bin/sh for i in *.txt do echo -e "$i\t`./class.crm < $i | grep Best`" done |
Poi vediamo:
./view -> Tutto di destra ./learn.crm --cat=sinistra.css < repubblica.txt ./view -> Tutto di sinistra ./learn.crm --cat=destra.css < carlino.txt # Si ripete (ometto i view, faccio learn sui soli errori, riporto solo la # sequenza dei learn) ./learn.crm --cat=sinistra.css < liberazione.txt ./learn.crm --cat=destra.css < giornale.txt ./learn.crm --cat=sinistra.css < manifesto.txt ./learn.crm --cat=destra.css < corriere.txt ./learn.crm --cat=sinistra.css < unita.txt # Ora è bravo. Da notare che non ha avuto bisogno di training per # marxismo.txt e stampa.txt
Possiamo chiedergli anche quanta differenza c'è tra destra e sinistra:
$ cssdiff destra.css sinistra.css Sparse spectra file destra.css has 1048577 bins total Sparse spectra file sinistra.css has 1048577 bins total File 1 total features : 139728 File 2 total features : 103392 Similarities between files : 5890 Differences between files : 123769 File 1 dominates file 2 : 133838 File 2 dominates file 1 : 97502
Sono molto di piú le differenze delle similarità. Strano: in Italia mi aspettavo il contrario.
Mettiamo alla prova la nostra intelligenza artificiale:
$ lynx -dump http://www.mariuana.it/ > maria $ ./class.crm < maria CLASSIFY succeeds; success probability: 1.0000 pR: 306.6527 Best match to file #1 (sinistra.css) prob: 0.7746 pR: 0.5361 Total features in input file: 178 #0 (destra.css): features: 139728, hits: 2323, prob: 2.25e-01, pR: -0.54 #1 (sinistra.css): features: 103392, hits: 2070, prob: 7.75e-01, pR: 0.54 $ lynx -dump http://spazioinwind.libero.it/gastroepato/cocaina.htm > coca $ ./class.crm < coca CLASSIFY succeeds; success probability: 1.0000 pR: 306.6527 Best match to file #0 (destra.css) prob: 0.5691 pR: 0.1208 Total features in input file: 17775 #0 (destra.css): features: 139728, hits: 23679, prob: 5.69e-01, pR: 0.12 #1 (sinistra.css): features: 103392, hits: 21597, prob: 4.31e-01, pR: -0.12
La cocaina è di destra e la mariuana e di sinistra: lo sanno tutti, e infatti lo sa anche crm.
È giunta finalmente ora di risolvere il grande quesito:
# Ma la figa, è di sinistra? $ lynx -dump http://www.figa.it/figa_1.html > figa $ ./class.crm < figa CLASSIFY succeeds; success probability: 1.0000 pR: 306.6527 Best match to file #1 (sinistra.css) prob: 0.9993 pR: 3.1273 Total features in input file: 2408 #0 (destra.css): features: 139728, hits: 16334, prob: 7.45e-04, pR: -3.13 #1 (sinistra.css): features: 103392, hits: 12168, prob: 9.99e-01, pR: 3.13
E vai! L'avevo sempre immaginato, ma ora ne ho avuto la conferma! :)