Dizionario fonetico

« Older   Newer »
  Share  
view post Posted on 25/2/2013, 22:31     +1   -1
Avatar

Member

Group:
Member
Posts:
301
Reputation:
0

Status:


La tecnica della conversione fonetica permette di condensare varie cifre alla volta in un solo termine. Però non è sempre facile trovare la giusta parola che possa codificare un numero, e per codificare tutte i numeri sotto al 100 è necessario memorizzare lo schedario.
Ho creato quindi un programma in python (qui di seguito il codice per chi fosse interessato)
EDIT: ho aggiornato il codice
SPOILER (click to view)
CODE
#@TarsioSpettro
import string
import re
#Per prima cosa separiamo tra di loro i gruppi che corrispondono ad un fonema codificabile, ad ogni gruppo dovra'
#corrispondere un numero
def getSillabe (parola):
       s=normalizza(parola)
       #eliminiamo le doppie:  'palla' e 'pala' hanno la stessa codifica
       doppie=re.compile(r'([a-z])\1+')
       s=doppie.sub(r'\1',s)        
       for c in ('b','c','d','f','g','k','l','m','n','p','q','r','s','t','v','x','z'):
               s=s.replace(c,'1'+c);        
       #gruppo 'sci', 'sce'  scivolo/scolo
       s=s.replace('s1ci','sci')
       s=s.replace('s1ce','sce')
       #gruppo 'gn' + vocale  gnomo/gonna
       s=s.replace('g1na','gna')
       s=s.replace('g1ne','gne')
       s=s.replace('g1ni','gni')
       s=s.replace('g1no','gno')
       s=s.replace('g1nu','gnu')
       #gruppo 'gli'  raglio
       s=s.replace('g1li','gli')        
       #Parole che iniziano con 'gli'  glicogeno
       if s[0:4]=='1gli': s='1g1'+s[2:]        
       #Parole che iniziano con 'glie' glielo, gliela
       s=s.replace('glie','glie')                
       parolaSpezzata=s.split('1')
       return parolaSpezzata
       
def normalizza (parola):
       #mettiamo tutto in minuscolo
       s=parola.lower()
       #eliminiamo punteggiatura
       for c in string.punctuation: s=s.replace(c,'');        
       #eliminiamo spazi bianchi
       for c in string.whitespace: s=s.replace(c,'');
       #eliminiamo numeri
       for c in string.digits: s=s.replace(c,'');
       #Ci sarebbero anche gli accenti da fare.....
       return s

def getNumeroGruppo (g):        
       #cerchiamo qual'e' il numero corrispondente. Partiamo dal 7, ossia 'c' e 'g' dure in modo che possa essere poi sostituito da ce gli sci etc.
       cod=''
       for c in ('g','c','k','q'):
               if g.find(c)!=-1 :
                       cod='7'
       #suono sibilante, sci e' gia' compreso in s
       for c in ('s','x','z'):
               if g.find(c)!=-1 :
                       cod='0'
       #suono dentale
       for c in ('t','d'):
               if g.find(c)!=-1 :
                       cod='1'
       for c in ('n'):
               if g.find(c)!=-1 :
                       cod='2'
       for c in ('m'):
               if g.find(c)!=-1 :
                       cod='3'
       for c in ('r'):
               if g.find(c)!=-1 :
                       cod='4'
       for c in ('l'):
               if g.find(c)!=-1 :
                       cod='5'
       for c in ('ci','ce','gi','ge'):
               if g.find(c)!=-1 :
                       cod='6'
       for c in ('f','v'):
               if g.find(c)!=-1 :
                       cod='8'
       for c in ('b','p'):
               if g.find(c)!=-1 :
                       cod='9'
       return cod
       
def getCodice(word):
       wordsplit=getSillabe(word)
       cod=''
       for x in wordsplit: cod+=getNumeroGruppo(x)
       return cod
def convertiDizionario(nomeFile):
       f=open(nomeFile,'r')
       testo=f.read()
       f.close
       testosplit=testo.split('\n')
       testocod=''
       listaParole=[]
       for x in testosplit: listaParole.append([getCodice(x),x])
       listaParole=sorted(listaParole)
       for x in listaParole: testocod=testocod+x[0]+'\t'+x[1]+'\n'
       f=open('dizionariocod.txt','w')
       f.write(testocod)
       f.close
       
convertiDizionario('dizionario.txt')

che trasforma un file di testo (dizionario.txt) contenente un elenco di parole in un file di testo contenenti i relativi numeri associati a qulle parole, dove per esempio 'streghe' diventa '0147'.
Ho poi messo tutto in un foglio di excel e ordinato il tutto ed ho ottenuto una specie di dizionario della conversione fonetica. Ossia un elenco di parole, in ordine di numerazione, dove per ogni numero si vede quale parola vi si può associare.

Così se per esempio avessi necessità di memorizzare il numero 6369012 andrò a cercare quale posizione occupano questi numeri, e trovo che cimice=636 e che bastone=9012, così ho bisogno di due immagini invece di 4.
La cosa non è ancora definitiva, l'ho un po' improvvisata, diciamo che un elenco di parole più fornito e un metodo per individuarle più comodo dello scorrere il foglio migliorerebbero molto il risultato finale.

Dopo non sempre si può avere la possibilità di consultare questo elenco, però può essere comodo per costruire un proprio schedario o per rendere più semplice memorizzare cose importanti (tipo numeri di telefono) con meno fatica

Ecco qua il file: EDIT:http://ge.tt/8I3ledZ/v/0

Edited by TarsioSpettro - 27/2/2013, 20:44
 
Top
view post Posted on 25/2/2013, 23:10     +1   -1
Avatar

Imparare a ricordare

Group:
Administrator
Posts:
4,944
Reputation:
+192

Status:


Grazie mi interessa moltissimo ma non ho capito come si usa.
 
Top
view post Posted on 26/2/2013, 10:32     +1   -1
Avatar

Member

Group:
Member
Posts:
301
Reputation:
0

Status:


Non è proprio che si usi, per il momento è solo un elenco che va scorso manualmente come i vecchi dizionari.
Però le parole sono in ordine per la loro decodifica, quindi se cerchi 789 dovrai scorrere l'elenco fino a trovare il 7, poi cercare l'8 e infine, se c'è, il 9, come appunto faresti per consultare un elenco telefonico.
Spero di riuscire a rendere la ricerca più automatizzata, ma in verità non saprei come fare.
Arricchire il dizionario non è difficile, basta estrarre parole da file di testo, l'unico problema è che in questa maniera si riasca di inserire parole come nomi propri o errori ortografici
 
Top
view post Posted on 26/2/2013, 10:48     +1   -1
Avatar

Member

Group:
Member
Posts:
301
Reputation:
0

Status:


Mi sono accorto di aver fatto due errori :(
Il primo è che i nomi e la codifica erano sfasati (questo l'ho corretto e ho sostituito il file, ora questo errore non c'è più)
Il secondo è che ho aggiunte 'ci' e 'ce' palatali, ma mi sono dimenticato 'gi' e 'ge' !!
Quindi giacere diventerebbe come ghiacere ossia 764

Comunque basta correggere la cosa, non ci vuole molto, se trovate altri errori segnalateli!
 
Top
view post Posted on 27/2/2013, 20:41     +1   -1
Avatar

Member

Group:
Member
Posts:
301
Reputation:
0

Status:


Corretto l'errore, e sistemato il link.
Potete scaricare il file qua:
http://ge.tt/8I3ledZ/v/0
 
Top
view post Posted on 27/2/2013, 21:25     +1   -1
Avatar

Imparare a ricordare

Group:
Administrator
Posts:
4,944
Reputation:
+192

Status:


Grazie, è veramente qualcosa di molto utile per chi vuole acquistare un po dimestichezza con la conversione fonetica. ;)
 
Top
view post Posted on 11/5/2023, 20:04     +1   -1

Junior Member

Group:
Member
Posts:
1
Reputation:
0

Status:


a me non si apre
 
Top
view post Posted on 11/5/2023, 20:04     +1   -1

Junior Member

Group:
Member
Posts:
1
Reputation:
0

Status:


a me non si apre
 
Top
7 replies since 25/2/2013, 22:31   1191 views
  Share