Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 06
Tema 06
F. J. Martı́n Mateos
J. L. Ruiz Reina
Introducción
Gramáticas independientes del contexto
Gramáticas de cláusulas definidas
Gramáticas probabilı́sticas
Modelos probabilı́sticos: n-gramas
Recuperación de la información
Clasificación de documentos
Sección 1
Introducción
Sección 2
Gramáticas independientes del contexto
Ejemplo
S =⇒ NP VP
NP =⇒ DT N
|N
|NP PP
VP =⇒ V NP
|V
|VP PP
PP =⇒ P NP
|P
DT =⇒ el | los
N =⇒ hombre | amigos | café | leche
V =⇒ toma | toman
P =⇒ con | solo
Ejemplo
S =⇒ NP VP
=⇒ DT N VP
=⇒ el N VP
=⇒ el hombre VP
=⇒ el hombre V NP
=⇒ el hombre toma NP
=⇒ el hombre toma N
=⇒ el hombre toma café
Podemos abreviar la derivación de la siguiente forma:
S =⇒∗ el hombre toma café
NP VP
DT N V NP
el hombre toma N
café
Sección 3
Gramáticas de clausulas definidas
sn sv
juan lambda(x,alto(x))
n verbo atributo
juan lambda(x,alto(x))
juan es adjetivo
lambda(x,alto(x))
alto
Ejemplo de sesión
?- phrase(oración(S),[pedro,come,pan]).
S = come(pedro, pan)
Sesión
?- phrase(oración(S),[todo,andaluz,come,pescado]).
S = para_todo(X, andaluz(X) => come(X, pescado))
?- phrase(oración(S),[algún,informático,tiene,dinero]).
S = existe(X, informático(X) y tiene(X, dinero))
?- phrase(oración(S),[algún,informático,es,andaluz]).
S = existe(X, informático(X) y andaluz(X))
Sección 4
Gramáticas probabilı́sticas
Ejemplo
S =⇒ NP VP 1,0
NP =⇒ DT N 0,4
|N 0,2
|NP PP 0,4
VP =⇒ V NP 0,5
|V 0,2
|VP PP 0,3
PP =⇒ P NP 0,8
|P 0,2
DT =⇒ el | los 0,50 c.u.
N =⇒ hombre | amigos | café | leche 0,25 c.u.
V =⇒ toma | toman 0,50 c.u.
P =⇒ con | solo 0,50 c.u.
Ejemplo
S1,0 S1,0
Ventajas
Dan una idea probabilı́stica de lo buena que es una derivación
sintáctica de una frase, permitiendo decidir ante una
ambigüedad
Las reglas probabilı́sticas se pueden aprender a partir de un
conjunto de ejemplos correctamente formado
Inconvenientes
La probabilidad de una frase depende únicamente de la
derivación sintáctica y no tiene en cuenta el contexto léxico:
La frase el amigos toma hombre tiene la misma
probabilidad que el hombre toma café
Las frases cortas tienen mayor probabilidad que las largas
Sección 5
Modelos n-gram
1. Sean N = LONGITUD(TEXTO),
PALABRAS un vector vacı́o de longitud N+1,
MEJOR un vector de longitud N+1 inicializado a 0 y
MEJOR[0] = 1
2. Para cada I desde 0 a N
2.1. Para cada J desde 0 a I-1
2.1.1. Sea PALABRA = TEXTO[J+1,I]
2.1.2. Si P[PALABRA] * MEJOR[J] >= MEJOR[I] entonces
2.1.2.1. Sea MEJOR[I] = P[PALABRA] * MEJOR[J]
2.1.2.2. Sea PALABRAS[I] = PALABRA
3. Sea SALIDA una cadena vacı́a e I = N
4. Mientras I > 0 hacer
4.1. SALIDA = ’ ’ + PALABRAS[I] + SALIDA
4.2. I = I - LONGITUD(PALABRAS[I])
5. Devolver SALIDA
TEXTO = "lacadenaestarota"
MEJOR[0] = 1
I = 1, J = 0: PALABRA = "l" P["l"] = 53.2e-6
MEJOR[1] = 53.2e-6 PALABRAS[1] = "l"
I = 2, J = 0: PALABRA = "la" P["la"] = 32072.3e-6
MEJOR[2] = 32072.3e-6 PALABRAS[2] = "la"
I = 2, J = 1: PALABRA = "a" P["a"] = 17230.6e-6
17230.6e-6 * 53.2e-6 = 0.917e-6
I = 3, J = 0: PALABRA = "lac" P["lac"] = 0.2e-6
MEJOR[3] = 0.2e-6 PALABRAS[3] = "lac"
I = 3, J = 1: PALABRA = "ac" P["ac"] = 2.1e-6
2.1e-6 * 53.2e-6 = 0.0001117e-6
I = 3, J = 2: PALABRA = "c" P["c"] = 138.1e-6
138.1e-6 * 32072.3e-6 = 4.429e-6
MEJOR[3] = 4.429e-6 PALABRAS[3] = "c"
I = 4, J = 0: PALABRA = "laca" P["laca"] = 3.0e-6
MEJOR[4] = 3.0e-6 PALABRAS[4] = "laca"
I = 4, J = 1: PALABRA = "aca" P["aca"] = 0.6e-6
0.6e-6 * 53.2e-6 = 0.00003192e-6
I = 4, J = 2: PALABRA = "ca" P["ca"] = 8.1e-6
8.1e-6 * 32072.3e-6 = 0.2598e-6
I = 4, J = 3: PALABRA = "a" P["a"] = 17230.6e-6
17230.6e-6 * 4.429e-6 = 0.07631e-6
Observaciones
La segmentación más probable de elundecimo es
el un decimo
El algoritmo da preferencia a palabras pequeñas (más
frecuentes) frente a palabras grandes (menos frecuentes)
El modelo unigram no tiene en cuenta relaciones contextuales
léxicas por lo que el algoritmo considerará como más probables
algunas segmentaciones sin sentido
Un proceso similar se aplica a la identificación de palabras en
reconocimiento del habla
Sección 6
Recuperación de la información
Definiciones:
La frecuencia de un término t en un documento d (notada
tft,d ) es el número de veces que aparece en el mismo
La frecuencia documental de un término t (notada dft ) es el
número de documentos en los que aparece el término
La frecuencia documental inversa de un término t es
idft = log (N/dft ), donde N es el número total de documentos
El peso de un término t en un documento d es
tfidft,d = tft,d · idft
Un vocabulario es un conjunto de términos que consideramos
importantes en la colección de documentos
Podrı́amos tomar como vocabulario el conjunto de todos los
términos de todos los documentos, o un subconjunto
significativo de ellos
En el modelo de espacio vectorial un documento se representa
como el vector de pesos de cada término del vocabulario
Documentos:
D1 : “Cargamento de oro dañado por el fuego”
D2 : “La entrega de la plata llegó en el camión color plata”
D3 : “El cargamento de oro llegó en un camión”
Consulta: “oro plata camión”
Vocabulario: llegó, dañado, entrega, fuego, oro, plata,
cargamento, camión, color.
Consultas:
Una consulta puede ser vista como un documento Q, y por
tanto como un vector Q ~ (la mayorı́a de sus componentes serán
cero)
~ W
sim(Q, ~ ) dará una medida de lo relevante que es el
documento respecto de la consulta (cuanto más cercano a
uno, más relevante)
Recuperación de información en el modelo vectorial:
transformar tanto la consulta como los documentos en
vectores de pesos, calcular los cosenos y presentar (ordenados)
los K mejores
Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural
Una consulta en el ejemplo anterior
1−d X PR(ini )
PR(p) = +d
N C (ini )
i
Sección 7
Clasificación de documentos
EntrenaNB(C,D)
1. Sea V igual al vocabulario que se extrae del conjunto de
entrenamiento D, y N el número de documentos de D
2. Para cada categorı́a c en C, hacer:
2.1 Sea Nc el número de documentos en la clase c y
prior[c]=Nc/N
2.2 Sea Texto c la concatenación de todos los documentos
de la clase c
2.3 Para cada t en V sea T –tc˝ el número de ocurrencias
de t en Texto c
2.4 Para cada t en V sea condprob[t,c] el resultado de
dividir T –tc˝+1 entre la suma de todos los (T –sc˝+1),
con s en V
3. Devolver V, y las matrices prior y condprob
ClasificaNB(C,V,prior, condprob, d)
1. Sea W el conjunto de términos de V que aparecen en d
2. Para cada clase c en C, hacer:
2.1 Inicializar score[c] con log(prior[c])
2.2 Para cada término t en W, acumular en score[c]
la cantidad log(condprob[t,c])
3. Devolver la clase c para la que score[c] sea máximo
X
ynb = argmax [log (P(Y = y ))+ log (P(X = xi |Y = y ))]
y ∈{spam.ham} 1≤i≤n