Categories
SEO

Cómo automatizar la búsqueda Intent Clustering de palabras clave

Hay mucho que saber sobre la intención de la búsqueda, desde el uso de aprendizaje profundo para inferir la intención de búsqueda clasificando el texto y rompiendo los títulos de serp utilizando el procesamiento de lenguaje natural (PNL) , a las técnicas de procesamiento de lenguaje natural (, a Clustering en función de la relevancia semántica

con los beneficios explicados.

No solo conocemos los beneficios de descifrar la intención de la búsqueda: Tenemos una serie de técnicas a nuestra disposición para escala y automatización.

Pero a menudo, aquellos implican construir su propio AI. ¿Qué sucede si no tiene tiempo ni el conocimiento para eso?

En esta columna, aprenderá un proceso paso a paso para automatizar la clómquería de palabras clave mediante la intención de búsqueda utilizando Python.

AnunciCementContinue La lectura a continuación

SERP contiene información para la intención de búsqueda

Algunos métodos rEquire que obtenga toda la copia de los títulos del contenido de clasificación para una palabra clave dada, luego aliméntela a un modelo de red neuronal (que tiene que construir y probar), o tal vez esté usando NLP para agrupar palabras clave.

Hay otro método que le permite usar el propio AI de Google para hacer el trabajo para usted, sin tener que raspar todo el contenido de SERPS y construir un modelo AI.

Supongamos que Google Range URLS del sitio por la probabilidad del contenido que satisface la consulta del usuario en orden descendente. De ello se deduce que si la intención de dos palabras clave es la misma, entonces es probable que los SERPS sean similares. AnunciCementContinue Lectura a continuación Durante años, muchos profesionales de SEO compararon los resultados de SERP para

las palabras clave

para inferir Búsqueda compartida (o compartida) Intención de permanecer enPrincipales actualizaciones principales, por lo que esto no es nada nuevo.

El valor agregado aquí es la automatización y la escala de esta comparación, que ofrecen velocidad y mayor precisión.

Cómo agrupar palabras clave por búsqueda Intención en la escala utilizando Python (con código)

Comience con su SERPS da como resultado una descarga de CSV.

 1. Importar la lista en su cuaderno de Python. 

Importar pandas como PDImport adormecedor como NPSERPS_INPUT = PD.READ_CSV (‘DATA / SEJ_SERPS_INPUT.CSV’) DEL SERPS_INPUT [‘Innominado: 0’] SERPS_INPUT

A continuación se muestra el archivo SERPS ahora importado en un contexto de Pandas. SERPs file imported into a Pandas dataframe.

SERPs file imported into a Pandas dataframe.

2. Filtrar datos para página 1

Queremos comparar los resultados de cada SERP entre las palabras clave.

 Dividiremos el flujo de datos en mini frascos de datos de palabras clave para ejecutar el filtroFunción G antes de la recombinación en un solo protector de datos, ya que queremos filtrar en el nivel de la palabra clave: <= k_urls]    return filtered_dffiltered_serps = serps_grpby_keyword.apply(filter_k_urls)# Combine## Add prefix to column names#normed = normed.add_prefix('normed_')# Concatenate with initial data framefiltered_serps_df = pd.concat([filtered_serps],axis=0)del filtered_serps_df['keyword']filtered_serps_df = filtered_serps_df.reset_index()del filtered_serps_df['level_1']filtered_serps_df

# split serps_grpby_keywordword = serps_input.groupby (“palabra clave”) k_urls = 15 # Aplicar Combinedef filter_k_urls (group_df): filtred_df = group_df .loc [group_df [‘url’]. Notnull ()] filtred_df = filtered_df.loc [filtred_df [‘ranking’]

3. Convierta las URL de clasificación a una cadena

Debido a que hay más URL de resultados de SERP que las palabras clave, necesitamos comprimir las URL en una sola línea para representar el SERP de la palabra clave.

 Aquí es cómo: 

# Convierte los resultados a las cadenas usando Split Aplique CombineFiltserPS_GRPBY_KEYWORD = filtred_serps_df.groupby (“palabra clave”) Def string_serps (df): df [‘serp_string’] = ” .join (df [‘url’]) devuelve df # combinestrung_serps = filtserps_grpby_keywepword.Aplicar (STRING_SERPS) # Concatenar con el marco de datos inicial y CleanstrunG_SERPS = PD.CONCAT ([STARUNG_SERPS], AXIS = 0) strung_serps = strung_serps[[‘palabra clave’, ‘serp_string’]]] #. Cabeza (30) strung_serps = strung_serps.drop_dupplicates () STRUNG_SERPS
SERP compressed into single line for each keyword. A continuación se muestra el SERP comprimido en una sola línea para cada palabra clave.

SERP compressed into single line for each keyword.

4. Compare la similitud de SERP

 Para realizar la comparación, ahora necesitamos cada combinación de la palabra SERP emparejada con otros pares: 

advertisementcontinue Lectura a continuación

# Alinee SERPSDEF SERPS_ALIGN (K, DF): prime_df = df. loc [df.keyword == k] prime_df = prime_df.rename (columnas = {“serp_string”: “serp_string_a”, ‘palabra clave’:’word_a ‘}) comp_df = df.loc [df.keywordy! = k] .reset_index (Drop = True) Prime_df = prime_df.loc [prebe_df.index.repeat (len (comp_df.index))]. reinici_index (Drop = True) prime_df = pd.concat ([prime_df, comp_df], eje = 1) prime_df = prime_df.rename (columnas = {“serp_string”: “serp_string_b “, ‘Palabra clave’: ‘/ keyword_b’,” serp_string_a “:” serp_string “, ‘keyword_a’: ‘keyword’}) devuelve prime_dfcolumns = [‘palabra clave’, ‘serp_string’, ‘keyword_b’, ‘serp_string_b’] coincidied_serps = pd .DataFrame (columnas = columnas) coincinchered_serps = coincidencia_serps.fillna (0) consultas = strungo_serps.keywordword.to_list () para q en las consultas: TEMP_DF = SERPS_ALIGN (Q, STRUNG_SERPS) coincidi_serps = coincidente_serps.append (temp_df) coincidi_serps Compare SERP similarity.

Compare SERP similarity.

Lo anterior muestra todas las combinaciones del par de la palabra clave, lo que lo hace listo para la comparación de cadenas SERP.

No hay código abierto Biblioteca que compara el objeto de lista.S por orden, por lo que la función se ha escrito por debajo.

 AnunciCementContinue Lectura a continuación 

La función ‘Serp_ComPare’ compara la superposición de los sitios y el orden de los sitios entre SERPs.

Overlap of sites and the order of those sites between SERPs. Importar PY_STRINGMATCHING como smws_tok = sm.whitespaceterizerizer () # solo compara los resultados de K_URLS TOP DEF SERPS_SIMILLIZITY (SERPS_STR1, SERPS_STR2, K = 15): Denom = K + 1 NORM = SUM ([2 * (1 / I – 1.0 / (Denom)) Para i en rango (1, denom)]) ws_tok = sm.whitespacetokenizerizer () serps_1 = ws_tok.tokenize (serps_str1) [: k] serps_2 = ws_tok.tokenize (serps_str2) [: k] coincidencia = lambda a, b: [ B.Index (X) +1 Si x en B más no, ninguno para x en a] pos_intersections = [(i + 1, j) para i, j en enumerar (coincidir (sirps_1, serps_2)) si j no es ninguno] pos_in1_not_in2 = [i + 1 para i, j en enumerar (coincidir (SERPS_1, SERPS_2)) Si J es ninguna] pos_in2_not_in1 = [i + 1 para i, j en enumerar (coincidir (SERPS_2, SERPS_1)) si J es ninguna] A_SUM = SUM ([ABS (1 / I -1 / J) Para i, j en pos_intersecciones]) b_sum = suma ([ABS (1 / I -1 / Denom) para i en pos_in1_not_in2]) c_sum = suma ([ABS (1 / I -1 / Denom) para i en POS_IN2_NOT_IN1]) intent_prime = a_sum + b_sum + c_sum intent_dist = 1 – (intent_prime / normand) retorno intent_dist # Aplique la funciónMatched_SERPS [‘SI_SIMI’] = coincidente_serps.apply (lambda x: serps_similarity (x.serp_string, x.serp_string_b), eje = 1) coincidente_serps[[“palabra clave”, “keyword_b”, “si_simi”]]

Overlap of sites and the order of those sites between SERPs.

 

Ahora que las comparaciones se han ejecutado, podemos Comenzar a agrupar palabras clave.
AnunciCementContinue Lectura a continuación Clustering keywords. Tratamos cualquier palabra clave que tengan una ponderadaSimilitud del 40% o más.

# Palabras clave de grupo por búsqueda intentsimi_lim = 0.4 # Únase a la búsqueda volumenkeysv_df = serps_inkeysv_df = serps_input[[‘palabra clave’, ‘search_volume’]]. Drop_dupplicates () keysv_df.head () # anexe topic volskeywords_crossed_vols = serps_compared.merge (keyysv_df, on = ‘keyword’, cómo = ‘Izquierda’) Palabras clave_crossed_vols = keyws_crossed_vols.rename (columnas = {‘palabra clave’: ‘Tema’, ‘keyword_b’: ‘palabra clave’, ‘search_volume’: ‘ topic_volume ‘}) # sim si_simikeywords_crossed_vols.sort_values ​​(‘ topic_volume ‘, ascendente = falso) # strip nanskeywords_filtered_nonnan = keywams_crossed_vols.dropna () Palabras clave_filtered_nonnan Clustering keywords. Ahora tenemos el nombre posible del tema, las palabras clave SERP Similitud y los volúmenes de búsqueda de cada uno.

Nota que la palabra clave y las palabras clave han sido renombradas al tema y la palabra clave, respectivamente.

 AnunciCementContinue Reading a continuación 

Ahora vamos a iterar sobre las columnas en el conteo de datos utilizando la técnica LAMDAS.

La técnica Lamdas es una forma eficiente de iterar sobre filas en un contexto de pandas porque convierte las filas en una lista en oposición a la función .iterrows ().

 

Aquí va:

QUERIES_IN_DF = LISTA (Set (keywams_filtered_nonnan.topic.to_list ())) topic_groups_numbered = {} topics_added = [] def encontrar_topics (si, keyw, topc): i = Últimas_index (topic_groups_numbered) if (Si> = simi_lim) y (no KeyW en topics_added) y (no TOPC en TOPICS_ADDED): i + = 1 topics_added.append (keyw) topics_added.append (topc) topic_gROUPS_NUMBED [I] = [KEYW, TOPC] ELIF SI> = SIMI_LIM Y (KEYW en TOPICS_ADDED) y (NO TOPC en TOPICS_ADDED): J = [Tecla para la tecla, valor en topic_groups_numbered.items () Si se usa en valor] Temas_ADDED. Anexar (TOPC) topic_groups_numbered [j [0]]. Anexar (TOPC) ELIF SI> = SIMI_LIM y (NO KEYW en TOPICS_ADDED) y (TOPC en TOPICS_ADDED): J = [Tecla para la clave, valor en topic_groups_numbered.items () Si TOPC en valor] topics_added.append (keyw) topic_groups_numbered [j [0]]. Anexo (keyw) def que se aplique_impl_ft (df): devuelva df.apply (lambda fila: find_topics (fila.si_simi, fila.keyword, fila.topic) , AXIS = 1) SOLICITUD_IMPL_FT (palabras clave_filtered_nonnan) topic_groups_numbered = {k: lista (set (v)) para k, v en topic_groups_numbered.items ()} topic_groups_numbered

 

a continuación muestra un diccionario que contiene todas las palabras clave agrupadas en la intención de búsqueda en grupos numerados:

Topic group dataframe. {1: [‘isa fija ISA’, ‘Tarifas de ISA’, ‘Tasas de interés de ISA’, ‘Las mejores tarifas ISA’, ‘Cash Isa’, ‘Cash ISA Tarifas’], 2: [‘Cuenta de ahorros infantil’, ‘Cuenta de ahorros para niños’], 3: [‘Cuenta de ahorro’, ‘Tasa de interés de cuenta de ahorros’, ‘ Tarifas de ahorro ‘,’ Ahorro de tasas fijas ‘,’ Fácil acceso a los ahorros ‘,’ Bonos de tarifas fijas ‘,’ Cuenta de ahorros en línea ‘,’ Cuenta de ahorros de fácil acceso ‘,’ Cuentas de ahorros UK ‘], 4: [‘ cuenta ISA ‘, ‘ISA’, ‘ISA AHORRIDOS’]}

Pegamos que en un contexto de datos: Topic group dataframe. topic_groups_lst = [] para k, l en topic_groups_numbered.items (): para v in l: topic_groups_lst .append ([k, v]) topic_groups_dictdf = pd.dataframe (topic_groups_lst, columnas = [‘topic_group_no ‘,’ palabra clave ‘]) topic_groups_dictdf

Los grupos de intentos de búsqueda anteriores muestran una buena aproximación de las palabras clave dentro de ellos, algo que Un experto de SEO probablemente lograría. PublicidadContinue leyendo a continuación Aunque solo usamos un pequeño conjunto de palabras clave, el método obviamente se puede escalar a miles (si no más).

Activación de las salidas a Haga su búsqueda mejor

Por supuesto, lo anterior podría tomarse más allá del uso de redes neuronales que procesan el contenido de clasificación para grupos más precisos y denominación de grupo de clúster, ya que algunos de los productos comerciales ya están disponibles.

Por ahora, con esta salida, puede:

Incorporar esto en sus propios sistemas de panel de SEO para hacer su tendenciaS y Informes de SEO Más significativos. MEJOR MEJOR Campañas de búsqueda de pago Al estructurar sus cuentas de anuncios de Google por la búsqueda de la búsqueda de una puntuación de mayor calidad. Búsqueda de ECOMMORE DE ECOMMORE RLLS. Taxonomía Según la intención de búsqueda en lugar de un catálogo de productos típico.AdvertisementContinue leyendo a continuación Estoy seguro de que hay más aplicaciones que no he mencionado, siéntase libre de comentar sobre cualquier importante que no haya mencionado.


En cualquier caso, su investigación de palabras clave SEO acaba de obtener un poco más escalable, precisa y más rápido! Más recursos:

Una introducción a Python para SEO técnico Cómo usar Python para analizar datos de SEO: una guía de referencia
Seo técnico avanzado: aGuía completa

Créditos de la imagen Imagen destacada: Astibuag / Shutterstock.com Todas las capturas de pantalla tomadas por el autor, de julio de 2021 advertisementContinue leyendo a continuación

Leave a Reply

Your email address will not be published. Required fields are marked *