machine learning - spanish - Binarización en el procesamiento del lenguaje natural
spacy español (3)
La binarización es el acto de transformar las coloridas características de una entidad en vectores de números, la mayoría de las veces vectores binarios, para hacer buenos ejemplos de algoritmos clasificadores.
Si queremos binarizar la oración "El gato se comió al perro", podríamos comenzar por asignarle a cada palabra una identificación (por ejemplo, cat-1, ate-2, the-3, dog-4) y luego simplemente reemplazar la palabra por es ID dando el vector <3,1,2,3,4>.
Dados estos ID también podríamos crear un vector binario dando a cada palabra cuatro ranuras posibles, y establecer la ranura correspondiente a una palabra específica con una, dando el vector <0,0,1,0,1,0,0,0 , 0,1,0,0,0,0,0,1>. El último método es, por lo que yo sé, se conoce comúnmente como el método de la bolsa de palabras.
Ahora, para mi pregunta, ¿cuál es el mejor método de binarización para describir las características del procesamiento del lenguaje natural en general y el análisis de dependencia basado en la transición (con el algoritmo Nivres) en particular?
En este contexto, no queremos codificar la oración completa, sino el estado actual del análisis, por ejemplo, la palabra más alta en la pila y la primera palabra en la cola de entrada. Como el orden es muy relevante, esto excluye el método de la bolsa de palabras.
Lo mejor , me refiero al método que hace que los datos sean más inteligibles para el clasificador, sin consumir memoria innecesaria. Por ejemplo, no quiero una palabra bigram para usar 400 millones de características para 20000 palabras únicas, si solo el 2% de los bólgrafos realmente existen.
Dado que la respuesta también depende del clasificador particular, me interesan principalmente los modelos de entropía máxima (liblinear), las máquinas de vectores de soporte (libsvm) y los perceptrones, pero las respuestas que se aplican a otros modelos también son bienvenidas.
Esta es realmente una pregunta realmente compleja. La primera decisión que debe tomar es si lematizar sus tokens de entrada (sus palabras). Si hace esto, disminuye drásticamente su conteo de tipos, y su análisis de sintaxis se vuelve mucho menos complicado. Sin embargo, se requiere mucho trabajo para lematizar un token. Ahora, en un lenguaje informático, esta tarea se reduce en gran medida, ya que la mayoría de los lenguajes separan las palabras clave o nombres variables con un conjunto bien definido de símbolos, como el espacio en blanco o un punto o cualquier otra cosa.
La segunda decisión crucial es qué vas a hacer con los datos post-facto. El método de "bolsa de palabras", en la forma binaria que ha presentado, ignora el orden de las palabras, lo cual es completamente correcto si está haciendo un resumen de un texto o tal vez una búsqueda al estilo de Google donde no le importa dónde las palabras aparecen, mientras aparezcan. Si, por otro lado, está construyendo algo así como un compilador o un analizador, el orden es muy importante. Puede usar el método token-vector (como en su segundo párrafo), o puede ampliar el enfoque de bolsa de palabras de modo que cada entrada que no sea cero en el vector bolsa-de-palabras contenga la posición de índice lineal del token en la frase.
Finalmente, si vas a construir árboles de análisis sintáctico , hay razones obvias por las que te gustaría ir con el método token-vector, ya que es una gran molestia mantener los identificadores de sub-frase por cada palabra en la bolsa-de -las palabras vector, pero muy fácil de hacer "sub-vectores" en un token-vector. De hecho, Eric Brill usó una secuencia de identificación de token para su etiquetador de voz parcial , que es realmente genial.
¿Te importa si te pregunto en qué tarea específica estás trabajando?
[No es una respuesta directa] Todo depende de lo que intenta analizar y luego procesar, pero para el procesamiento general de frases cortas (por ejemplo, IVT), otro método es usar redes neuronales para aprender los patrones. Esto puede ser muy preciso para vocubularios pequeños
La binarización es el acto de transformar las coloridas características de una entidad en vectores de números, la mayoría de las veces vectores binarios, para hacer buenos ejemplos de algoritmos clasificadores.
En su mayoría he encontrado características numéricas que toman valores entre 0
y 1
(no binarios como usted describe), que representan la relevancia de la característica particular en el vector (entre 0% y 100%, donde 1
representa 100%). Un ejemplo común para esto son los vectores tf-idf : en el vector que representa un documento (o frase), usted tiene un valor para cada término en todo el vocabulario que indica la relevancia de ese término para el documento representado.
Como Mike ya dijo en su respuesta , este es un problema complejo en un campo amplio. Además de sus punteros, puede ser útil buscar algunas técnicas de recuperación de información como el modelo de espacio vectorial , la clasificación del espacio vectorial y la indexación semántica latente como puntos de partida. Además, el campo de la desambiguación del sentido de la palabra trata mucho con los problemas de representación de características en PNL.