usar paper min_count medium funciona for español dummies como word2vec

word2vec - paper - Cómo obtener el vector para una oración de la palabra2vec de tokens en la oración



word2vec medium (8)

Depende del uso:

1) Si solo desea obtener un vector de oración para algunos datos conocidos. Consulte el vector de párrafo en estos documentos:

Quoc V. Le y Tomas Mikolov. 2014. Representaciones distribuidas de oraciones y documentos. Eprint Arxiv, 4: 1188-1196.

AM Dai, C. Olah y QV Le. 2015. DocumentEmbedding con Párrafo Vectores. Impresiones electrónicas ArXiv, julio.

2) Si desea un modelo para estimar el vector de oración para oraciones desconocidas (prueba) con enfoque no supervisado:

Podrías consultar este artículo:

Steven Du y Xi Zhang. 2016. Aicyber en SemEval-2016 Tarea 4: representación de oraciones basada en i-vector. En Actas del Décimo Taller Internacional sobre Evaluación Semántica (SemEval 2016), San Diego, EE. UU.

3) Los investigadores también están buscando la salida de cierta capa en la red RNN o LSTM, un ejemplo reciente es:

http://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/view/12195

4) Para el gensim doc2vec, muchos investigadores no pudieron obtener buenos resultados, para superar este problema, siguiendo el documento usando doc2vec basado en vectores de palabras previamente entrenados.

Jey Han Lau y Timothy Baldwin (2016). Una evaluación empírica de doc2vec con información práctica sobre la generación de incrustación de documentos. En Actas del 1er Taller sobre Aprendizaje de Representación para PNL, 2016.

5) tweet2vec o sent2vec .

Facebook tiene un proyecto SentEval para evaluar la calidad de los vectores de oración.

https://github.com/facebookresearch/SentEval

6) Hay más información en el siguiente documento:

Modelos de redes neuronales para identificación de paráfrasis, similitud semántica textual, inferencia del lenguaje natural y respuesta a preguntas

Y por ahora puedes usar ''BERT'':

Google lanza el código fuente, así como los modelos previamente entrenados.

https://github.com/google-research/bert

Y aquí hay un ejemplo para ejecutar bert como servicio:

https://github.com/hanxiao/bert-as-service

He generado los vectores para una lista de tokens de un documento grande usando word2vec. Dada una oración, ¿es posible obtener el vector de la oración del vector de los tokens en la oración?


Es posible, pero no de word2vec. La composición de vectores de palabras para obtener representaciones de nivel superior para oraciones (y más aún para párrafos y documentos) es un tema de investigación realmente activo. No hay una mejor solución para hacer esto, realmente depende de qué tarea desea aplicar estos vectores. Puede probar la concatenación, la suma simple, la multiplicación puntual, la convolución, etc. Hay varias publicaciones sobre esto de las que puede aprender, pero en última instancia, solo necesita experimentar y ver qué le queda mejor.


Existen diferentes métodos para obtener los vectores de oración:

  1. Doc2Vec : puede entrenar su conjunto de datos usando Doc2Vec y luego usar los vectores de oración.
  2. Promedio de vectores de Word2Vec : puede tomar el promedio de todos los vectores de palabras en una oración. Este vector promedio representará su vector de oración.
  3. Promedio de vectores de Word2Vec con TF-IDF : este es uno de los mejores enfoques que recomendaré. Simplemente tome la palabra vectores y multiplíquela con sus puntajes TF-IDF. Simplemente tome el promedio y representará su vector de oración.

Hay varias formas de obtener un vector para una oración. Cada enfoque tiene ventajas y defectos. Elegir uno depende de la tarea que desea realizar con sus vectores.

Primero, simplemente puede promediar los vectores de word2vec. Según Le y Mikolov , este enfoque funciona mal para las tareas de análisis de sentimientos, ya que "pierde el orden de las palabras de la misma manera que lo hacen los modelos estándar de bolsa de palabras" y "no reconoce muchos fenómenos lingüísticos sofisticados". por ejemplo sarcasmo ". Por otro lado, según Kenter et al. 2016 , "simplemente promediar las incrustaciones de palabras de todas las palabras en un texto ha demostrado ser una línea de base o característica sólida en una multitud de tareas", como las tareas de similitud de texto corto. Una variante sería ponderar los vectores de palabras con su TF-IDF para disminuir la influencia de las palabras más comunes.

Un enfoque más sofisticado desarrollado por Socher et al. es combinar vectores de palabras en un orden dado por un árbol de análisis de una oración, usando operaciones de matriz-vector. Este método funciona para el análisis de sentimientos de oraciones, porque depende del análisis.


He tenido buenos resultados de:

  1. Sumando los vectores de palabras (con ponderación tf-idf). Esto ignora el orden de las palabras, pero para muchas aplicaciones es suficiente (especialmente para documentos cortos)
  2. Fastsent

La red de promedio profundo (DAN) puede proporcionar incrustaciones de oraciones en las que se promedian los bi-gramos de palabras y se pasan a través de la red neuronal profunda (DNN).

Se encuentra que el aprendizaje de transferencia usando incrustaciones de oraciones tiende a superar la transferencia de nivel de palabra, ya que preserva la relación semántica.

No necesita comenzar la capacitación desde cero, los modelos DAN preentrenados están disponibles para su lectura (consulte el módulo Universal Sentence Encoder en google hub).


Las incrustaciones de Universal Sentence Encoder de Google son una solución actualizada a este problema. No usa Word2vec pero da como resultado una solución competitiva.

Aquí hay un recorrido con TFHub y Keras .


Puede obtener representaciones vectoriales de oraciones durante la fase de entrenamiento (únase a las oraciones de prueba y entrenamiento en un solo archivo y ejecute el código word2vec obtenido del siguiente enlace).

El código para oración2vec ha sido compartido por Tomas Mikolov here . Se supone que la primera palabra de una línea es id de oración. Compila el código usando

gcc word2vec.c -o word2vec -lm -pthread -O3 -march=native -funroll-loops

y ejecutarlo usando

./word2vec -train alldata-id.txt -output vectors.txt -cbow 0 -size 100 -window 10 -negative 5 -hs 0 -sample 1e-4 -threads 40 -binary 0 -iter 20 -min-count 1 -sentence-vectors 1

EDITAR

Gensim (versión de desarrollo) parece tener un método para inferir vectores de nuevas oraciones. Consulte el model.infer_vector(NewDocument) en https://github.com/gojomo/gensim/blob/develop/gensim/models/doc2vec.py