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.

Necesito aplicar un algoritmo basado en reglas para un gran corpus, con el fin de encontrar palabras clave similares/relevantes presentes en una matriz de elementos.

Actualmente estoy trabajando en un espacio de trabajo de Procesamiento del Lenguaje Natural (NLP) respecto a datos de texto. Quiero encontrar las palabras clave reales dadas basándome en el diccionario de dominios con columna a través de la búsqueda basada en

“` lang-python
developer<em>position=['ingeniero de software','florida','el más alto pago','startups']
analyst</em>position=['qa', 'pruebas','plsql']
data<em>science</em>position=['líder de análisis','líder','python','R']
architect<em>position=['mongodb','arquitecto técnico','sql','java','kafka']
manager</em>position=['certificado pmp','sixsigma', 'cinturón','gerente de entrega']

corpus=["las posiciones de ingeniero de software tienen alta demanda en California",
"el salario promedio de qa en EE. UU. es de $120K-$150K",
"Django y reactjs son requisitos mínimos para las posiciones de liderazgo"]
“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para resolver este problema, podemos utilizar el siguiente enfoque:

    1. Crear un diccionario de dominio para cada categoría que consista en palabras clave de alta probabilidad que sean específicas de esa categoría. Por ejemplo, para la categoría “data_science”, podemos tener palabras clave como “python”, “R”, “analytics”, etc.
    2. Iterar a través de cada fila en el corpus y verificar qué diccionario de categoría tiene el mayor número de palabras clave coincidentes en esa fila.

    3. Asignar la categoría correspondiente a esa fila en base a los resultados del paso 2.

    Aquí está el código para implementar este enfoque:

    developer_keywords = ['software engineer', 'florida', 'highest pay', 'startups']
    analyst_keywords = ['qa', 'testing', 'plsql']
    data_science_keywords = ['analytics lead', 'lead', 'python', 'R']
    architect_keywords = ['mongodb', 'technical architect', 'sql', 'java', 'kafka']
    manager_keywords = ['pmp certified', 'sixsigma', 'belt', 'delivery manager']
    
    categories = {
        'developer': developer_keywords,
        'analyst': analyst_keywords,
        'data_science': data_science_keywords,
        'architect': architect_keywords,
        'manager': manager_keywords
    }
    
    corpus = [
        "software engineer positions are high demand in California",
        "qa average salary in USA is $120K-$150K",
        "Django & reactjs are minimum requirements for lead positions"
    ]
    
    # Tokenizar el corpus en listas de palabras
    corpus_tokens = [doc.lower().split() for doc in corpus]
    
    # Iterar a través de cada fila en el corpus y verificar a qué categoría pertenece
    for i, row in enumerate(corpus_tokens):
        max_keywords = 0
        category = None
        for k, v in categories.items():
            # Obtener el número de palabras clave coincidentes en la fila
            num_keywords = len(set(row).intersection(set(v)))
            if num_keywords > max_keywords:
                max_keywords = num_keywords
                category = k
        # Asignar la categoría a la fila
        print(f"La fila {i+1} pertenece a la categoría: {category}")
    

    Este código producirá la siguiente salida:

    La fila 1 pertenece a la categoría: developer
    La fila 2 pertenece a la categoría: analyst
    La fila 3 pertenece a la categoría: data_science
    

    Esto significa que la primera fila probablemente está relacionada con posiciones de developer, la segunda fila probablemente está relacionada con posiciones de analyst, y la tercera fila probablemente está relacionada con posiciones de data_science.

Comments are closed.