Métodos basados en Kernels para el Procesamiento de Lenguaje Natural
G. Moncecchi
1Grupo PLN, Instituto de Computación, Facultad de Ingeniería, Universidad de la República, Uruguay
2Laboratoire MoDyCo, Université Paris Ouest, Nanterre La Défense, France
XI Jornadas de Informática e Investigación Operativa
Montevideo, Abril 2010
Extracción de Relaciones y Aprendizaje Automático Clasificación lineal Kernels Kernels para el Procesamiento de Lenguaje Natural
Agenda
1
Extracción de Relaciones y Aprendizaje Automático
2
Clasificación lineal
Rosenblatt’s Perceptron Voted Perceptron
3
Kernels
¿Por qué kernels?
¿Qué son bien los kernels?
4
Kernels para el Procesamiento de Lenguaje Natural String subsequence kernels
Convolution kernels
Kernels para Extracción de Relaciones
Conclusiones
Extracción de relaciones: un caso de clasificación
Corpus de trabajo: Bioinfer
Las entidades ya están identificadas
Extracción de relaciones vs. Identificación de relaciones Ambos pueden verse como tareas de clasificación,
¿cuáles atributos elijo?
Extracción de Relaciones y Aprendizaje Automático Clasificación lineal Kernels Kernels para el Procesamiento de Lenguaje Natural
Aprendizaje supervisado
Aprendizaje supervisado: aprender de ejemplos etiquetados
Función objetivo; Función de decisión
Espacios de hipótesis; Algoritmo de aprendizaje; Hipótesis Consistentes
Generalización: clasificar datos que no están en el conjunto de entrenamiento
Sobreajuste
Clasificación
f : X ⊆ R
n→ R, si f (x) ≥ 0 entonces x = (x
1, . . . , x
n)
0pertenece a la clase positiva (+1)
Si f (x) es una función lineal de x f (x) = hw · xi + b
=
n
X
i=1
w
ix
i+ b
Datos de entrenamiento:
S = ((x
1, y
1), . . . , (x
l, y
l)) ⊆ (X × Y)
lExtracción de Relaciones y Aprendizaje Automático Clasificación lineal Kernels Kernels para el Procesamiento de Lenguaje Natural
Rosenblatt’s Perceptron Voted Perceptron
Interpretación geométrica
Rosenblatt’s Perceptron
El primer algoritmo iterativo para aprender clasificadores lineales
Dirigido por errores. Cada vez que se equivoca, corrige el hiperplano obtenido hasta el momento
Anda siempre... siempre que los datos sean linealmente separables
Novikoff: El número de errores está acotdado por max kx
ik
y por el margen del conjunto de entrenamiento (no por la
dimensionalidad) Demo
Extracción de Relaciones y Aprendizaje Automático Clasificación lineal Kernels Kernels para el Procesamiento de Lenguaje Natural
Rosenblatt’s Perceptron Voted Perceptron
Algoritmo del perceptron: forma dual
w = P
li=1
α
iy
ix
iα
iproporcional a las veces x
ifue mal clasificada La nueva función de decisión
h(x) = sgn(hw · xi + b)
= sgn(h
n
X
i=1
α
iy
jx
j· xi + b)
= sgn(
n
X
i=1
α
iy
jhx
j· xi + b)
... sólo depende de los productos internos entre el ejemplo
a clasificar y los elementos del conjunto de entrenamiento
Gram matrix G = (hx
i· x
ji)
li,j=1Voted perceptron
¿Qué hiperplano elegimos? ¿Qué pasa si los datos no son linealmente separables?
Freund and Schapire, 1999 Algoritmo batch
Por supuesto, admite versión dual.
Parecido a las SVM, más fácil de implementar (y de
entender!)
Extracción de Relaciones y Aprendizaje Automático Clasificación lineal Kernels Kernels para el Procesamiento de Lenguaje Natural
¿Por qué kernels?
¿Qué son bien los kernels?
¿Por qué kernels?
¿Qué pasa si suponemos que la función no es lineal?
(From http://fedc.wiwi.hu-berlin.de/xplore/ebooks/html/csa/node221.html)
Un ejemplo: kernel polinomial
hx · zi
2= (
n
X
i=1
x
iz
i)
2= (
n
X
i=1
x
iz
i)(
n
X
j=1
x
jz
j)
=
n
X
i=1 n
X
j=1
x
ix
jz
iz
j=
(n,n)
X
(i,j)=(1,1)
(x
ix
j)(z
iz
j)
= hφ(x) · φ(z)i
with φ(x) = (x
ix
j)
(n,n)(i,j)=(1,1)Demo
Extracción de Relaciones y Aprendizaje Automático Clasificación lineal Kernels Kernels para el Procesamiento de Lenguaje Natural
¿Por qué kernels?
¿Qué son bien los kernels?
¿Por qué kernels? (cont)
La combinación entre kernels y versiones duales de los algoritmos nos permite aplicar algoritmos que buscan funciones lineales a casos donde la función objetivo no es lineal
Clasificadores como SVM, Voted Perceptron son robustos
al sobreajuste
Kernels
Un kernel es una función K , tal que para todo x, z ∈ X, K (x, z) = hφ(x) · φ(z)i, siendo φ un mapeo (eventualmente no lineal) a otro espacio de atributos
Nuestras funciones hipótesis serán de la forma:
f (x) = P
Ni=1
w
iφ
i(x) + b
Si tenemos una representación dual, la función de decisión será: f (x) = P
li=1
α
iy
ihφ
i(x
i) · φ(x)i + b
No necesitamos el mapeo de atributos para aprender!, y con ello tal vez podemos evitar la maldición de la
dimensionalidad
Podemos construir kernels empezando por los atributos...
... o generar kernels combinando kernels
... o directamente mostrar que K es un kernel (usando el
Extracción de Relaciones y Aprendizaje Automático Clasificación lineal Kernels Kernels para el Procesamiento de Lenguaje Natural
String subsequence kernels Convolution kernels
Kernels para Extracción de Relaciones Conclusiones
SSK
Text Classification using String Kernels (Lodhi et al., 2002) A veces los datos no pueden ser directamente descritos por vectores de atributos explícitos (secuencias biológicas, textos)
Si pudiéramos definir el producto interno entre puntos mapeados a un espacio de mayor dimensionalidad...
... podríamos resolver el problema de la clasificación
utilizando una máquina lineal (SVM, Perceptron)
Entonces, definen un kernel para secuencias de texto
SSK
Consideramos cat, car, bat, bar, and k = 2. Podemos contar los substrings de largo k que tienen, definiendo un atributo en R
Σk
(sí, una cantidad enorme de atributos). λ es un factor de decay que pesa qué tan contiguos aparecen
Entonces, K (x , y ) = hφ(x ) · φ(y )i Por definición, K es un kernel.
En el paper presentan un algoritmo de orden O(n|s||t|)
Extracción de Relaciones y Aprendizaje Automático Clasificación lineal Kernels Kernels para el Procesamiento de Lenguaje Natural
String subsequence kernels Convolution kernels
Kernels para Extracción de Relaciones Conclusiones
SSK
Resultados del SSK kernel + SVM para clasificar textos
Convolution kernels
Convolution kernels for Natural Language (Collins & Duffy, Lodhi et al., 2001)
Cuando hacemos parsing, nuestros ejemplos no son vectores: son árboles
h
k(x ) cuenta el número de veces que el k − simo subárbol aparece en el árbol x
Φ(x ) = hh
1(x ), h
2(x ), . . . h
d(x )i and ...
φ(T
1) · φ(T
2) = P
di=1
h
i(T
1)h
i(T
2)
Con ese kernel, más una forma eficiente de calcular φ(T
1) · φ(T
2) y la forma dual del perceptron, podemos aprender eficientemente
... ¿Pero aprender qué? Aprender a reordenar análisis
Extracción de Relaciones y Aprendizaje Automático Clasificación lineal Kernels Kernels para el Procesamiento de Lenguaje Natural
String subsequence kernels Convolution kernels
Kernels para Extracción de Relaciones Conclusiones
Convolution Kernels
Applying the Convolution kernel + Voted Perceptron for a
parsing task, on the Penn treebank ATIS corpus
Kernels para Extracción de Relaciones
A survey of kernel methods for relation extraction (Moncecchi et al., 2010?)
(Zelenko et al., 2003): Los kernels son medidas de similitud entre árboles de análisis superficial
(Bunescu and Mooney, 2005): kernels sobre los caminos más cortos entre dos entidades
(Culotta and Sorensen, 2004): kernels sobre árboles de dependencias
(Bunescu and Mooney, 2006): kernel sobre subsecuencias de palabras (considerando solamente las que incluyan entidades candidatas)
(Zhou et al., 2007): más kernels sobre árboles de análisis
(Airola et al., 2006): kernels basados en grafos sobre los análisis
Extracción de Relaciones y Aprendizaje Automático Clasificación lineal Kernels Kernels para el Procesamiento de Lenguaje Natural
String subsequence kernels Convolution kernels
Kernels para Extracción de Relaciones Conclusiones