Como mencionó Omer hace más de un año, se han publicado varios artículos para resolver el problema de capturar múltiples sentidos de una palabra, por ejemplo. Java el lenguaje vs Java la isla. Algunos de los modelos con fuentes también están disponibles para descargar. Enumerar un par de ellos que arrojan resultados tal como lo afirman los periódicos. Estos dos documentos, en particular, son adaptaciones del modelo de skipgram de word2vec y no requieren ninguna supervisión: aprenden los sentidos múltiples de las palabras automáticamente del corpus de entrenamiento.
- Este trabajo rompiendo palos y ambigüedades con Adagram de salto adaptativo es el más reciente hasta ahora que he encontrado. Este también parece ser el mejor entre los modelos vistos hasta la fecha. ( Vea las imágenes al final para ver ejemplos de resultados de este modelo)
- Un buen aspecto de esta interfaz de modelo es que no solo generará vectores de palabras separados para diferentes contextos de palabras, sino que también enumerará la probabilidad del significado de una palabra en particular basándose en una oración de entrada. Entonces, para una palabra como “manzana”, el vector que representa a la compañía sería más probable que el vector que representa la fruta en la oración: “el nuevo iPhone acaba de ser lanzado”
- Este modelo utiliza una forma modificada de la ruta de muestreo jerárquica de Word2vec Skipgram, y concurrente con los vectores de palabras de entrenamiento, utiliza un proceso de Dirichlet (esta es quizás la explicación más lúcida disponible en línea de este proceso: ¿Cuál es una explicación intuitiva de la agrupación de procesos de Dirichlet? ¿Cómo ejemplifica el proceso de Dirichlet la Urna de Polya o la ruptura de un palo? ¿Cómo utiliza la agrupación basada en el muestreo de Gibbs para un modelo de mezcla de Dirichlet el proceso de Dirichlet? Los hiperparámetros clave de este modelo son
- Alfa: controla el nivel de granularidad para inducir diferentes significados. Demasiado bajo: 0,05 dará como resultado significados menores. Demasiado alto producirá significados demasiado finos con superposición. Los valores recomendados son entre .1-.2.
- El tamaño de la ventana: igual que Skipgram
- El número máximo de significados diferentes. El documento utiliza 30 para todos sus resultados, aunque la mayoría de las palabras pueden no tener en promedio más de 2 significados.
- Hay un video de uno de los autores del artículo que explica el modelo.
- Este trabajo La estimación eficiente no paramétrica de incrustaciones múltiples por palabra en el espacio vectorial precede al trabajo anterior. Tiene dos modelos para generar incrustaciones de palabras multisentido. YauhenMinsk / NP-MSSG
- Hay dos modelos descritos en este documento, uno de los cuales aprende un número fijo de sentidos de palabras, donde el número se especifica al modelo como un hiperparámetro. El segundo modelo ( no paramétrico ) aprende los diferentes sentidos automáticamente.
- Estos modelos funcionan capturando esencialmente los múltiples sentidos de la palabra de los vectores de contexto que se usan en el entrenamiento de los vectores de palabras ( pero descartados ) en word2vec ¿Cómo funciona word2vec? .
- Solo uno de los modelos ( modelo paramétrico ) funcionó para mí; el otro falló en la generación.
Hay varios otros modelos que intentan resolver este problema.
- Un modelo probabilístico para aprender incrustaciones de palabras de prototipos múltiples Microsoft /.
- El código está disponible en Github, aunque no podría funcionar en Linux. Microsoft / distribution_skipgram_mixture
- Sense2vec con spaCy y Gensim
- Incorporaciones de palabras tópicas: el código para este modelo se publica en Github, pero no pudo hacer que funcione.
- Este modelo se implementa en Scala, por lo que requiere la instalación de JDK.
No he visto ningún trabajo en el que estas incorporaciones de palabras de sentido múltiple se usen en tareas posteriores como NER. Sin embargo, hay un documento de Stanford ¿Las incrustaciones de sentido múltiple mejoran la comprensión del lenguaje natural? que analiza los posibles beneficios para las tareas posteriores.
- ¿Alguno de los IIT ofrece cursos de ingeniería inversa y desarrollo de exploits?
- ¿Pueden los gerentes ser reemplazados por inteligencia artificial?
- ¿Cómo se ve tu equipo?
- Si pudieras retroceder en el tiempo con una unidad flash moderna, ¿cómo conseguirías que una computadora la lea?
- ¿Qué importancia tienen las ecuaciones diferenciales parciales para la robótica?
Agregar algunas instantáneas sobre los resultados del modelo Adaptive Skipgram ( usando el mismo corpus text8 que word2vec usa para la demostración ).
Esta imagen muestra los dos sentidos para la palabra planta en el corpus
Esto muestra los tres sentidos para la palabra luz en el corpus. El índice de sentidos (1) relacionado con el electromagnetismo (2) vehículos con peso ligero (3) la luz en sentido filosófico se utiliza en la siguiente imagen.
El uso de los diferentes sentidos de la palabra luz para diferentes oraciones – (1) Relacionado con el electromagnetismo (2) vehículos livianos (3) luz ‘filosófica’
Notas adicionales sobre la instalación de Adagram.
- Uno necesita instalar Julia para usar este modelo. También es posible que deba reemplazar una palabra “RemoteRef” por “Future” en un archivo “src / gradient.jl” para que funcione; también asegúrese de que LD_LIBRARY_PATH esté configurado en la ubicación donde están instaladas las bibliotecas. El lenguaje de Julia parece estar evolucionando aún, por lo que uno puede encontrar problemas con incompatibilidades del código fuente del modelo y el paquete de idioma (lo mejor es instalar Julia desde el sitio Instrucciones específicas de la plataforma para instalar Julia donde se enumeran los binarios. El paquete se instala como sudo apt-get etc.pueden instalar versiones que simplemente no funcionan)