3. Bigrames factoritzats¶
Un bigrama és una seqüència de parelles de paraules que apareixen consecutivament en un text. Els bigrames s’utilitzen en aplicacions com la traducció automàtica, la generació de llenguatge natural o l’anàlisi de seqüències genètiques.
Per exemple, donada la frase "a cat runs as fast as a bicicle", els seus bigrames serien:
(a, cat), (cat, runs), (runs, as), (as, fast), (fast, as),
(as, a), (a, bicicle).
En aquest exercici treballarem amb bigrames factoritzats, que permeten representar, per a cada paraula, totes les possibles continuacions. Expressarem un bigrama factoritzat com un diccionari a on la clau és una paraula i el valor una llista amb totes les paraules que poden aparèixer immediatament després.
Dissenya la funció següent i desa-la al fitxer bigrames.py:
- bigrames.extreu_bigrames(text, bigrama)¶
Modifica el diccionari
bigramaincorporant els bigrames trobats a l’stringtext, és a dir, afegint cada possible continuació a la llista corresponent de la paraula però sense duplicats. A més, retorna una llista de tuples a on cada tupla és un bigrama factoritzat.- Paràmetres:
- Retorna:
Llista de tuples amb bigrames factoritzats. Cada tupla és una parella (paraula,llista de continuacions). La llista està ordenada ascendentment segons paraula.
- Tipus de retorn:
Els següents doctests mostren exemples del que ha de fer la funció:
>>> bigrama = {'a': ['cat']} >>> text = 'a cat jumps and runs fast a dog jumps high' >>> resultat = extreu_bigrames(text, bigrama) >>> bigrama == { ... 'a': ['cat', 'dog'], ... 'cat': ['jumps'], ... 'jumps': ['and', 'high'], ... 'and': ['runs'], ... 'runs': ['fast'], ... 'fast': ['a'], ... 'dog': ['jumps'] ... } True >>> resultat [('a', ['cat', 'dog']), ('and', ['runs']), ('cat', ['jumps']), ('dog', ['jumps']), ('fast', ['a']), ('jumps', ['and', 'high']), ('runs', ['fast'])]
Nota
Disposes de més tests al fitxer
test-extreu-bigrames.txt
Disposeu de solucions al fitxer bigrames.py