IMlog
Perché perdere tempo col linguaggio naturale?
Autore: Federico.Riva | Categoria: Web Marketing | Data: Mercoledì, 30 Marzo 2005 

Ask Jeeves ha annunciato l’intenzione di pubblicare a breve un motore di ricerca che finalmente riesca a fornire risultati per domande poste in maniera naturale.

Il NLP (Natural Language Processing) 'è di moda' ormai da decenni; come è noto, non ha ancora trovato delle applicazioni significative; in sostanza, non funziona affatto bene; per Internet il fallimento è ancora più evidente; ogni tanto capita di vedere banner di Google con scritto frasi del tipo “Qual è il grattacielo più grande del mondo?”, oppure “Qual è l’oceano più profondo?”; cliccando sul banner, si apre una pagina di ricerca che di fatto mostra dei link di siti che rispondono efficacemente alla domanda visualizzata sul banner; se si guarda però la query attivata dal banner si vede che non ha niente a che fare con il linguaggio naturale. La ricerca di solito è attivata dalla combinazione di alcune keyword.

La cosa che non ho mai capito è tutto questo interesse verso il linguaggio naturale. Non è forse più semplice insegnare agli essere umani a utilizzare una sintassi diversa da quella che utilizziamo ogni giorno quando chiediamo una rivista al nostro edicolante? A mio parere sì; se andiamo in una biblioteca che dispone di un thesaurus cerchiamo con parole-chiave e con combinazioni di parole-chiave e non ponendo ‘domande naturali’.

Il linguaggio naturale d’altronde è tendenzialmente meno efficiente di altri tipi di linguaggi. La maggior parte delle parole contenute in una domanda ‘naturale’ non hanno alcun significato, ma servono per dare un’intonazione, per essere ironiche oppure retoriche, ma di certo non hanno alcun senso quando ci troviamo in una situazione di IR (Information Retrieval) come in un motore di ricerca. Al contrario sembra essere molto più interessante un altro acronimo, più recente (se ne parla dagli anni ’80) e sicuramente più interessante (per lo meno nell’ambito dei search engine): LSI (Latent Semantic Indexing).

Cercherò di spiegare in un prossimo post di che cosa si tratta; per adesso, cercate su Google con “latent semantic indexing”; vedrete che nel più grande motore di ricerca del mondo sono in cerca di persone che conoscano bene questo argomento (hanno pubblicato un adword in proposito…che dice:

Work at Google
Google is hiring expert computer
scientists and software developers!

Forse che sia questa la vera frontiera dei motori di ricerca?

Commenti

IMHO la soluzione 'ideale' è un thesaurus 'umano' unito alla LSI. in questo modo l'imprecisione dell'LSI (fin troppo reale) è limitata. Inoltre, mi sembra che si molto più realistico di un search-engine-HAL...

Inviato da: federico @ 01.04.05 16:33

Federico, quello che mi proponevo di affermare e' che non e' sufficiente un'unico ingrediente per risolvere
i problemi di qualita' di un search engine: per raggiungere questo obiettivo, nessuna tecnica (che sia applicabile industrialmente)
se puo' dare un contributo, puo' venire esclusa: che si chiami NLP, AI, LSI o che ne so.
Il problema e' di non fermarsi alle etichette, spesso fuorvianti, ma di guardare cosa c'e' concretamente dentro: dal punto di vista di idee, metodi, tecniche, algoritmi, etc. e utilizzare quello che serve, senza pregiudizi, se questo aiuta a risolvere.

Se oggi, come fai presente, la maggior parte dei search engine sembrano funzionare ancora solo con le regole "classiche" (ma non ne sarei cosi' sicuro), cio' non significa che la rappresentazione dei dati (documenti e query) non sia molto piu' complessa, di quello che puo' apparire ad un utente. Dato un documento/pagina, per includerlo come risultato in una search generalista o a maggior ragione in search verticali, occorre estrarre da esso tutta una serie di informazioni che rappresentino la conoscenza in esso contenuta (e' noto da tempo che usare esclusivamente i dati canonici quali: titolo, corpo, page rank, etc. non e' piu' sufficiente): per svolgere efficacemente questo task occorre avvalersi di una serie di tecniche, anche statistiche, ivi comprese alcune che fanno parte dell'area NLP.
L'uso di questi algoritmi, che in fondo tengono conto di aspetti morfologici e sintattici della lingua italiana, permettono di semplificare l'estrazione di questa conoscenza, ottenendo una precisione non disponibile con altre tecniche (es. LSI) esclusivamente statistiche.
Se poi, in questa catena di analisi e' disponibile anche una rete semantica "robusta" in cui sono rappresentati gli oggetti del linguaggio e loro relazioni, unita ad un disambiguatore efficiente, posso iniziare anche a lavorare sui significati e quindi sulla semantica, in modo concreto.
Parlare di qualita' significa, quindi, poter gestire anche la precisione: la sola statistica non e' sufficiente; come non e' sufficiente (per l'altissimo costo computazionale) usare solo NLP: infatti, alla fine, viene usato un cocktail di algoritmi e tecniche che, attualmente e' parte dell'area Web/Text Mining.

LSI: certamente e' una tecnica molto interessante, svincolata dal linguaggio,
essenzialmente statistica, ma proprio per questa sua caratteristica non puo' essere precisa, specialmente in un dominio generalista come il Web: se viene risolto l'enorme problema della sua applicabilita' con dati *reali* (ordine di decine di milioni di documenti e non migliaia), forse, puo' essere applicabile nei domini verticali ... chissa!

Per quanto riguarda la disambiguazione, non ho mai detto che Arianna e' stato il primo ad introdurla, semmai tra i primi e' stato Altavista, che intorno al '97/'98, insieme ai risultati della ricerca, proponeva un frame con "una piccola rete semantica" di termini in relazione con la domanda utente, in cui da ogni termine si poteva attivara una nuova ricerca.
Arianna e' stato il primo (e probabilmente lo e' ancora) ad avere una rappresentazione concettuale oltre che terminologica di tutti i documenti del web italiano (il concetto e' un oggetto molto diverso dal termine!), effettuando anche la stessa trasformazione sulla domanda utente, da qui il riferimento a motore concettuale.

Inviato da: Roberto B. @ 01.04.05 13:16

Ciao Roberto. In Google ci sono certamente degli esperti in AI, ma probabilmente siamo ancora lontani da un utilizzo delle loro competenze; ho provato a cercare su Google.it "chi è il primo ministro in italia?", che sarebbe una classica 'ricerca' di AI; a prescindere dal fatto che il primo risultato è una pagina di Gay.it (sic), è singolare leggere questa dicitura sotto la form di ricerca: !Le seguenti parole sono molto comuni e sono state escluse dalla ricerca: il in"; se si clicca su 'dettagli' si leggono delle cose interessanti; per esempio:

Parole comuni

Google ignora le parole ed i caratteri comuni, denominati anche "stop words", scartando automaticamente termini come "http" e ".com" nonché alcune singole cifre e lettere, dal momento che questi termini non aiutano a restringere il campo di ricerca ma anzi contribuiscono a rallentare i tempi di ricerca.

Utilizzare il segno "+" per includere parole comuni nella ricerca. Ricordarsi di lasciare uno spazio prima del segno "+". Il segno "+" può essere utilizzato anche per la ricerca di frasi.

e poi

Lettere maiuscole/minuscole o accenti

Google non fa distinzione tra lettere minuscole e maiuscole poiché considera tutte le lettere come minuscole. Ad esempio, digitando "google", "GOOGLE" e "GoOgLE" si ottengono sempre gli stessi risultati.

Per impostazione predefinita, Google non riconosce accenti o altri segni diacritici. In altre parole, se si digita [Muenchen] e [München] si ottengono sempre gli stessi risultati. Per fare una distinzione tra le parole, anteporre il segno +; ad esempio [+Muenchen] rispetto a [+München].

Google sembra - e giustamente - essere molto iù interessto al Latent Semantic Indexing piuttosto che all'intelligenza artificiale (eccellente invece per fare funzionare il forno a microonde...); il fatto è che il LSI è sotto certi punti di vista 'opposto' ai pincipi dell'intelligenza artificiale; anche nel LSI le stop words e le stop functions vengono utilizzate ampiamente e inoltre viene utilizzato ampiamente anche lo stemming Ma che senso ha parlare di linguagtgio naturale quando proprio le parole che rendono un linguaggio 'naturale' sono quelle che vengono immediatamente eliminate e quando non vengono considerate le parole 'per intero' ma solo la loro radice (lo stemming appunto)?
Il fatto è che - apparantemente in modo paradossale - il passaggio da un motore di ricerca lessicale a uno semantico non passa affatto dal NLP;
vorrei concludere con una piccola nota 'egotistica'...:) il motore di ricerca arianna non è affatto il primo ad avere introdotto la 'disambiguazione' delle parole; io stesso sono autore di un brevetto internazionale che ha inventato questa 'funzione' applicata ai motori di ricerca; questa invenzione è stata applicata per la prima volta in Godado 5 anni fa; se sei interessato ai dettagli del brevetto, li puoi trovare qui:http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=GB2362971&QPN=GB2362971&RPN=GB2362971&DOC=ce973ee58c45ffbc7535f3ab731ac19138
ciao :)
federico

Inviato da: federico @ 31.03.05 23:34

Ci sono oggi molte aree applicative in cui e' fondamentale l'apporto del Natural Language Processing o NLP.
Ma, rimanendo nell'ambito dei motori di ricerca, le tecniche basate sull'NLP hanno lo scopo di migliorare la qualita' della risposta uscendo dalla sfera esclusivamente terminologica e cercando di riconoscere anche i significati presenti nei documenti elaborati o nelle domande espresse dall'utente.
Questo fatto fondamentale e' la vera evoluzione (ovvero il salto tecnologico) del Web Search Engine: arrivare a "comprendere" la domanda dell'utente per fornire un risultato quanto piu' semanticamente vicino a cio' che l'utente ha richiesto.
Per raggiungere questa funzionalita' e' necessario utilizzare anche tecniche di elaborazione del linguaggio naturale per rappresentare i documenti in modo piu' "approfondito" ed analizzare le domande utente in modo da ricavarne i concetti espressi: certamente in questi processi di elaborazione non vengono usate solo tecniche NLP, ma quelle ci devono essere.

L'argomento e' troppo vasto per essere affrontato in poche righe.
Comunque basti pensare che il tanto citato Google ha come direttore della Search Quality "un tale" Peter Norvig, uno dei principali scienziati dell'AI, Fellow e Councilor dell' American Association for Artificial Intelligence e co-autore del testo, Artificial Intelligence: A Modern Approach, il best-seller tecnico del settore.
Inoltre, Google stessa afferma:
" ... To implement a good search algorithm on the scale of the web requires ideas from just about every area of computer science, including information retrieval, artificial intelligence, natural language processing, distributed computing, ... " [http://labs.google.com/why-google.html]
e questo la dice lunga ...
Per non parlare di Ibm, Microsoft, Yahoo!... etc. e tante altre aziende che hanno a che fare con l'elaborazione di testi.

In Italia, nonostante tutto, molto si sta facendo.
Un esempio online e' la web search Arianna (Wind, Libero) che fin dal 2002 usa tecniche di elaborazione del linguaggio per migliorare la ricerca e fornire suggerimenti alle ricerche utente attraverso un motore concettuale.
Per esempio, la query "zucchero" puo' essere intesa nel senso di "alimento, saccarosio" o di "cantante, Zucchero Fornaciari".
Arianna, attraverso il Prova Anche, distingue i due concetti e permette all'utente di scegliere quale search effettuare.
[http://arianna.libero.it/search/abin/integrata.cgi?step=2&query=zucchero]

Quindi occorre fare molta attenzione nell'affermare che una tecnica e' inutile: dipende come la si usa e per che cosa.
In questi ultimi anni, tra l'altro, si sta assistendo all'emergere di nuove discipline come ad esempio il Web/Text Mining che fa uso di Machine Learning, Pattern Recognition, Statistics, Information Extraction, Text Categorization, Content Analysis, etc. e molte di queste usano tecniche e algoritmi di NLP per funzionare. Anche se nella maggior parte di questi casi l'NLP non e' citata esplicitamente.

Inviato da: Roberto B. @ 31.03.05 13:09

Ciao Dario. Sinceramente penso che il linguaggio naturale applicato ai motori di ricerca non abbia nulla a che vedere con quello di cui parli tu. Posto che i linguaggi di programmazione si sono 'semplificati' (diciamo che per fare cose 'simili'- non le stesse- ci si impiega meno tempo e bisogna essere meno bravi) e posto che comunque i linguaggi di basso livello si usano ancora moltissimo (non creedo che si possano scrivere algoritmi di compressione di un file in php,ma forse mi sbaglio...)io parlavo di un argomento più specifico: quello dei motori di ricerca; sicuramente arriverà il tempo in cuio attrraverso il nostro cellulare (o con un chip infilato da qualche parte sotto la nostra pelle) potremo ordinare agli elettrodomestici che cosa fare e quando (ci siamo quasi...)e la cosa potrebbe sembrare a molti entusiasmante. senza dubbio. Ma non mi entusiasma affatto l'idea che i motori di ricerca possano 'rispondere' alla domanda: quanto è alto il K2? Oppure: Dove è nata Britney Spears?. Lo dico perché penso che questo dovrebbe essere l'ultimo passaggio di una tecnologia di ricerca che lascia ancora tantissimo a desiderare; lo sai che se cerco 'golf' su Google non viene visualizzata la home page del sito ufficiale di Tiger Woods, solo perché non contiene la parola golf? Hai poi visto le descrizioni dei risultati di ricerca di tutti i SE? Sono orrende, non si capisce nulla e l'utente clicca a caso sui link senza sapere che sito si aprirà, 'fidandosi' del ranking. L'idea di un internet modello 'big trivial pursuit' non mi affascina per niente; per il momento preferirei che i motori si sforzassero di fornire dei risultati di ricerca decenti, sforzandosi molto di migliorare la qualità dei risultati oltre che id fare a gara sulla quantità. Che senso ha introdurre il NLP quando ancora abbiamo dei motori lessicali e il Latent Semantic Indexing è ancora relegato alle unversità del Tennessee..?

Inviato da: federico @ 31.03.05 11:44

Mai programmato in assembler? Io sì. Ti assicuro che quando hanno sviluppato il C mi è sembrato di toccare il cielo con un dito: la potenza dell'assembler e la facilità d'uso di un linguaggio MOLTO più simile al mio.

Mai usata una CLI (Comand Line Interface)? Io sì, pure per modificare un file. La prima interfaccia full-screen su cui ho lavorato (XEDIT) era un sogno.

Poi le GUI, il WYSIWYG, ecc....

Oggi un PC lo sa usare anche mia figlia di 10 anni perché devi sapere solo fare clic qui e là e non conoscere complesse sintassi di comandi per muoversi nel filing system.

Insegnare un computer a capire l'italiano o l'inglese o lo spagnolo è un'impresa madornale, ma concettualmente possibile, avendo abbastanza potenza di calcolo e scrivendo applicazioni molto sofisticate di AI. Ma ci si arriverà. E tu chiederai al tuo computer di accendere il riscaldamento a casa, farti sapere se c'è un bel film stasera (lo hai già informato dei tuoi gusti) e di ricordarti domani l'appuntamento con Marabella (non dimenticare le rose, rosse, lei odia le bianche). Fantascientifico, inutile? No, normale evoluzione. Gli umani hanno sviluppato la tecnologia NON perché sono intelligenti, ma perché sono pigri. Odiano studiare, imparare cose nuove, amano essere serviti. Per cui...... ;-)

Inviato da: Dario de Judicibus @ 30.03.05 21:05

Credo che il linguaggio naturale possa invece essere di supporto nel migliorare la precisione e la rilevanza ma non deve essere utilizzato isolatamente. Supponiamo di avere fatto una richiesta in cui sono inseriti i termini "processo" o "albero" e la combinazione di parole chiave non offre i risultati ricercati. Il motore in linguaggio naturale può offrire valide alternative. In aula ho spesso utilizzato Ask Jeeves come esempio di partenza per la progettazione di contenuti user based essendo consapevole che siamo ancora alla preistoria. Credo che sia la combinazione tra keywords e linguaggio naturale che ci offrirà in futuro ottime possibilità. Su questa strada l'Italia è all'avanguardia una volta tanto.

Inviato da: Maurizio Goetz @ 30.03.05 11:08

Advertising
Commenti Recenti
federico: IMHO la soluzione 'ideale' è un thesaurus 'umano' [Leggi]
Roberto B.: Federico, quello che mi proponevo di affermare e' [Leggi]
federico: Ciao Roberto. In Google ci sono certamente degli e [Leggi]
Roberto B.: Ci sono oggi molte aree applicative in cui e' fond [Leggi]
federico: Ciao Dario. Sinceramente penso che il linguaggio n [Leggi]
Dario de Judicibus: Mai programmato in assembler? Io sì. Ti assicuro c [Leggi]
Maurizio Goetz: Credo che il linguaggio naturale possa invece esse [Leggi]
TAG

Post Recenti
Archivio
Categorie
Link
Autori
Andrea.Boscaro (4)
Andrea.Cappello (3)
Antonella.Cadeddu (28)
Claudia.Lanteri (2)
Claudio.Iacovelli (4)
Elisabetta.Oldrini (35)
Enrico.Bianchessi (21)
Eva.Bassi (2)
Federico.Riva (27)
Francesca.Gugliucci (2)
Gianluca.Arnesano (2)
Gianluca.Demarchi (19)
Gianluca.Diegoli (12)
Giorgio.Baresi (1)
Giuseppe.Mayer (114)
Jacopo.Gonzales (7)
Laura.Cocorempas (9)
Lorenzo.Citro (3)
Lorenzo.LaRegina (1)
Lucia.Vellandi (3)
M. Bancora (120)
Marco.Loguercio (3)
Martina.Zavagno (2)
Matteo.Balzani (490)
Maurizio Goetz (136)
Maurizio.Caimi (2)
Michele.DeCapitani (1)
Redazione (50)
Riccardo.Porta (2)
Roberto Cucco (4)
Sebastiano.Pagani (38)
Simone.Lovati (11)
Thomas.Grones (3)
Thomas.Salerno (1)



Tutti i contenuti sono liberamente riproducibili citando la fonte. I commenti ai post appartengono ai rispettivi autori, i quali si assumono la responsabilitá di quanto scritto. I testi degli interventi appartengono ai rispettivi autori. Tutte le email comunicate sono archiviate esclusivamente per pubblicare il blog. Tutti i contenuti sono pubblicati sotto la licenza Creative Commons. Le opinioni riportate in questo sito non rispecchiano necessariamente né hanno legami con le posizioni degli autori nelle aziende in cui lavorano, collaborano o forniscono consulenze.