Newsgroup: it.comp.programmare
Titolo: Programmare un traduttore (inglese italiano e italiano inglese)

Voglio scrivere un programma per tradurre dall'inglese all'italiano e 
viceversa.
Ho già fatto delle prove (traduzioni parola-parola a forza bruta...) ma 
dai risultati un po' scarsi.
Il problema principale è riuscire a tradurre correttamente "strange 
woman" in "donna strana" invece che in "donna strano" come ora.
Il fatto è che quando gli attributi ed i verbi coniugati si accumulano 
diventa un casino.
Tradurre correttamente "she was a strange woman who likes green apples" 
rispettando i maschili/femminili e singolari/plurali ad esempio di 
"likes" e dell'immediatamente successivo "green" è un assoluto casino.
Non so da dove cominciare. Mi viene in mente solo l'idea di riuscire a 
far fare al traduttore l'analisi grammaticale+logica della frase per 
riuscire ad assegnare ogni parola che necessiti di sing/plur e 
masch/femm all'oggetto a cui si riferisce.
Però come si può intuire far fare l'analisi grammaticale+logica è un 
vero bagno si sangue.
Che dite? Quali scorciatoie si possono prendere per riuscire a scrivere 
un programma che riesca a capire che quel "likes" si riferisce a 
"woman" e che quel "green" invece si riferisce a "apples"?
Qualsiasi idea o segnalazione di info online sono immensamente ben 
accette, grazie.

 viceversa.
Intanto dovresti concentrarti sulla base dati delle parole.
Hai gia' un vocabolario?
Oppure devi definirlo?
Ma sei proprio sicuro di voler affrontare da solo una cosa del genere?
Perche' attualmente il livello di funzionamento di un traduttore a caso,
quello microsoft, produce frasi di questo tenore:
"Quando imposta un nuovo account di posta elettronica in Outlook che si
connette a un server IMAP e si configura Outlook per non ricordare la
password, č possibile risultare a quello la password che non si mantengono
le impostazioni configurate dopo che si invia o si controlla il messaggio
di posta elettronica per la prima volta. Ad esempio, quando sopra, si
controlla la posta elettronica per la prima volta, informazioni di
accesso, e le impostazioni di password sono la reimpostazione e la casella
di controllo sopra Remember password, si seleziona la scheda Server."
Come puoi verificare leggendo direttamente l'articolo
http://support.microsoft.com/kb/816481/it
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 viceversa.
Te l'ha chiesto un cliente?
Se e' cosi', la risposta giusta e' "non si puo' fare"  :-)
I software commerciali e servizi online riassumono decenni di ricerca da 
parte di migliaia di persone.
Se invece stai facendo esperimenti per conto tuo, tieni presente che "I 
bagni sono di sangue reale" (*)
(*) "e' un vero bagno di sangue" attraverso Google Translate.

 all'italiano e viceversa.
Come ti hanno già detto altri, lo stato dell'arte in questo campo è 
ancora abbastanza lontano dall'ottenere risultati accettabili per 
testi meno che banali.
Ci possono essere traduttori basati su set di frasi ben definite e 
forse obbligando l'utente a costruire le frasi secondo una struttura 
rigida si possono raggiungere risultati accettabili, ma la traduzione 
di un testo qualsiasi da una lingua all'altra rimane una delle 
attività in cui l'essere umano funziona decisamente meglio del 
calcolatore.
In generale dovresti per prima cosa ricavare un "modello sintattico" 
della frase, facendo quella che viene chiamata (credo ancora oggi... 
ma sono ricordi lontani di una delle cose che ho odiato di più nella 
mia carriera scolastica :)) "analisi logica".
Poi devi tradurre le singole parole e riassemblare la frase secondo il 
modello sintattico equivalente della lingua di destinazione (che 
potrebbe essere completamente diverso da quello di partenza!), 
considerando che dovrai coniugare verbi (a seconda della lingua), 
gestire forme plurali/singolari, maschili/femminili etc. e altre 
particolarità specifiche di ogni lingua (se non ricordo male nella 
lingua degli indiani Navajo c'è, ad esempio, una forma verbale ad-hoc 
per le cose che si sono sognate...) e specifiche del passaggio da una 
lingua all'altra (parole che in Italiano sono maschili, in Francese 
diventano femminili... e viceversa).
Come puoi capire non è il classico problemino che si risolve con un 
programmino da poche righe :)
-- 
Valter Minute
(the reply address of this message is invalid)
(l'indirizzo di reply di questo messaggio non è valido)

 accette, grazie.
Quello che ti serve è un buon testo sulle grammatiche trasformazionali. 
Oltre a quello, come già ti dissero, TAAANTO lavoro e la pazienza per 
accontentarti di un programma che non sarà mai buono abbastanza...
Comincia scrivendo un motore trasformazionale per i singoli vocaboli 
(nomi, aggettivi e verbi), poi passa alle frasi intere, cercando un 
qualche sistema euristico per scartare subito le trasformazioni più 
assurde. Il traduttore di Google è molto buono (rispetto alla media 
degli altri...) e deve le sue migliori prestazioni a un sistema 
statistico di scelta dei significati: cioè se un dato significato per un 
vocabolo è molto spesso giusto quando quel vocabolo compare insieme a 
certi altri, e alcuni di quei certi altri vocaboli sono presenti anche 
nel testo da tradurre, lui sceglie quel significato... ma non so quanti 
giga di testi han dovuto analizzare statisticamente per farsi il DB 
semantico. Vedi quanti te ne serviranno e poi fammi sapere che sono 
curioso ^_^
In bocca al lupo :-)

 > accette, grazie
prego!

 il migliore sia il C++.... A console ovviamente!
Davvero? Avrei giurato fosse in assoluto uno dei peggiori, invece. :-)

> Davvero? Avrei giurato fosse in assoluto uno dei peggiori, invece. :-)
Se lo usi con Visual Studio sì :-)))