¿Cómo puedo utilizar una incrustación de palabras para asignar un documento a un vector de características, adecuado para su uso con el aprendizaje supervisado?
A incrustación de palabras mapea cada palabra $w$ a un vector $v \in \mathbb{R}^d$ , donde $d$ es un número no demasiado grande (por ejemplo, 500). Populares incrustaciones de palabras incluye word2vec y Guante .
Quiero aplicar el aprendizaje supervisado para clasificar documentos. Actualmente estoy asignando cada documento a un vector de características utilizando la representación de bolsa de palabras, y luego aplicando un clasificador estándar. Me gustaría reemplazar el vector de características de la bolsa de palabras con algo basado en una incrustación de palabras ya entrenada, para aprovechar el conocimiento semántico que contiene la incrustación de palabras. ¿Existe una forma estándar de hacerlo?
Puedo imaginar algunas posibilidades, pero no sé si hay algo que tenga más sentido. Enfoques candidatos que he considerado:
-
Podría calcular el vector de cada palabra del documento y hacer una media de todas ellas. Sin embargo, esto parece que podría perder mucha información. Por ejemplo, con la representación de bolsa de palabras, si hay unas pocas palabras que son muy relevantes para la tarea de clasificación y la mayoría de las palabras son irrelevantes, el clasificador puede aprenderlo fácilmente; si hago un promedio de los vectores de todas las palabras del documento, el clasificador no tiene ninguna posibilidad.
-
Concatenar los vectores de todas las palabras no funciona, porque no conduce a un vector de características de tamaño fijo. También parece una mala idea porque será demasiado sensible a la ubicación específica de una palabra.
-
Podría utilizar la incrustación de palabras para agrupar el vocabulario de todas las palabras en un conjunto fijo de clústeres, digamos, 1000 clústeres, donde utilizo la similitud del coseno en los vectores como medida de similitud de las palabras. Entonces, en lugar de una bolsa de palabras, podría tener una bolsa de clusters: el vector de características que proporciono al clasificador podría ser un vector de 1000, donde el $i$ cuenta el número de palabras del documento que forman parte del clúster $i$ .
-
Dada una palabra $w$ Estas incrustaciones de palabras me permiten calcular un conjunto de las 20 palabras más similares $w_1,\dots,w_{20}$ y su puntuación de similitud $s_1,\dots,s_{20}$ . Podría adaptar el vector de características tipo bolsa de palabras utilizando esto. Cuando veo la palabra $w$ además de incrementar el elemento correspondiente a la palabra $w$ por $1$ También podría incrementar el elemento correspondiente a la palabra $w_1$ por $s_1$ , incrementa el elemento correspondiente a la palabra $w_2$ por $s_2$ y así sucesivamente.
¿Hay algún enfoque específico que pueda funcionar bien para la clasificación de documentos?
No estoy buscando paragraph2vec o doc2vec; esos requieren entrenamiento en un corpus de datos grande, y yo no tengo un corpus de datos grande. En su lugar, quiero utilizar una incrustación de palabras existente.