Transferencia de aprendizaje de vectores de palabras
Quiero adaptar vectores de palabras ya existentes (por ejemplo, de Spacy) y volver a entrenarlos en un conjunto de datos específico de un dominio bastante limitado. El problema es que no puedo encontrar una forma de tomar los vectores ya entrenados y adaptarlos a mis nuevos datos.
Hasta ahora he utilizado gensim, pero no parece funcionar como esperaba.
A continuación se muestra el código que utilicé con gensim, pero también agradecería cualquier indicio utilizando algo distinto a gensim.
<h1>ejemplo ilustrativo, estoy utilizando datos de un libro de texto para la aplicación real</h1>
<p>training_data = [['Esto', 'es', 'un', 'ejemplo'],['para', 'datos', 'de', 'entrenamiento']] </p>
<h1>construir un modelo word2vec con su conjunto de datos</h1>
<p>base<em>model = Word2Vec(size=300, min</em>count=1)
base<em>model.build</em>vocab(training<em>data)
total</em>examples = base<em>model.corpus</em>count</p>
<h1>agregar vocabulario y pesos de GloVe</h1>
<p>base<em>model.build</em>vocab([list(glove_vectors.vocab.keys())], update=True)</p>
<h1>base<em>model.build</em>vocab([list(glove<em>vectors.index</em>to_key)], update=True)</h1>
<h1>vectores spacy ya entrenados de dimensión 300</h1>
<p>base<em>model.intersect</em>word2vec<em>format('spacy</em>vecs.txt', binary=False, lockf=1.0)</p>
<h1>entrenar con sus datos</h1>
<p>print("Ejecutando ", base<em>model.epochs, "iteraciones")
base</em>model.train(training<em>data, total</em>examples=total<em>examples, epochs=100, compute</em>loss=True, callbacks=[callback()])
base<em>model</em>wv = base_model.wv</p>
<p>base<em>model.wv.save</em>word2vec<em>format('vectores</em>reentrenados.txt', binary=False)
Comprobar los vectores de palabras posteriormente no produce un resultado coherente, así que algo debe estar saliendo mal aquí.
Esto se realiza en Python 2.7, ya que la versión más reciente de gensim no parece admitir esta función.
davy.ai
Adaptando vectores de palabras existentes para datos específicos del dominio
Si tienes un conjunto de vectores de palabras preentrenados, como los proporcionados por spaCy, y deseas volver a entrenarlos en datos específicos del dominio, puedes utilizar bibliotecas como gensim para hacerlo. Sin embargo, algunos usuarios han reportado problemas con este método que no producen resultados significativos.
Un enfoque para adaptar vectores de palabras preentrenados es intersectarlos con tus datos específicos del dominio y luego ajustarlos mediante entrenamiento. Aquí tienes un ejemplo de cómo hacer esto utilizando gensim:
Ten en cuenta que el método
intersect_word2vec_format
se utiliza para intersectar los vectores preentrenados con los datos específicos del dominio. El parámetrolockf
se establece en 1.0 para evitar cambiar los vectores preentrenados durante el entrenamiento. Finalmente, después de ajustar el modelo en los datos específicos del dominio, puedes guardar los vectores reentrenados para su uso posterior.Si aún encuentras problemas al adaptar vectores de palabras preentrenados utilizando gensim, es posible que desees considerar otras bibliotecas para esta tarea, como PyTorch o TensorFlow. Alternativamente, podrías entrenar tus propios vectores de palabras desde cero utilizando tus datos específicos del dominio.