es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Incrustaciones de palabras para frases

Tengo un conjunto de datos que contiene aproximadamente 50 mil registros de títulos de trabajo. Por ejemplo:

  1. Desarrollador Python
  2. Desarrollador Java
  3. Contador
  4. Vendedor
  5. Desarrollador
  6. Programador

etc. (Los títulos de trabajo están en alemán, pero para la explicación no importa)

Quiero agrupar trabajos similares y para esto quiero utilizar incrustaciones de palabras de cada título de trabajo. Para esto, he elegido la biblioteca spaCy.

nlp = spacy.load("de_core_news_lg")

Casi cada palabra tiene una representación de incrustación. Por ejemplo: python, developer, etc. Pero si los defino juntos como frase (“Desarrollador Python”), esta no tiene una representación de incrustación.

¿Cómo puedo crear incrustaciones de palabras de la combinación de palabras (como “Desarrollador Python”)?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para crear word embeddings de combinaciones de palabras como “Python Developer”, puedes utilizar la biblioteca spaCy para primero tokenizar el título del trabajo en palabras individuales y luego combinar los embeddings de palabras individuales para crear una representación de embedding de toda la frase.

    Aquí tienes un ejemplo de código que demuestra este enfoque:

    import spacy
    
    # cargar el modelo de spaCy
    nlp = spacy.load("de_core_news_lg")
    
    # definir una función para crear un embedding de frase
    def phrase_embedding(phrase):
        tokens = nlp(phrase)
        # obtener los embeddings de palabras individuales
        word_vectors = [token.vector for token in tokens
                        if not token.is_stop and not token.is_punct]
        # combinar los embeddings de palabras para crear un embedding de frase
        phrase_vector = sum(word_vectors) / len(word_vectors)
        return phrase_vector
    
    # probar la función en un ejemplo de título de trabajo
    job_title = "Python Developer"
    job_embedding = phrase_embedding(job_title)
    print(job_embedding)
    

    Este código primero carga el modelo de spaCy y define una función llamada phrase_embedding que toma un título de trabajo como entrada y devuelve una representación de embedding de toda la frase. La función primero tokeniza el título del trabajo utilizando el modelo de spaCy, luego recupera los embeddings de palabras individuales, filtra las palabras de parada y los signos de puntuación, y finalmente combina los embeddings de palabras individuales tomando su promedio.

    Ahora puedes aplicar esta función a todo el conjunto de datos de títulos de trabajo para crear una matriz de embeddings que se puede utilizar para agrupar trabajos similares.

Comments are closed.