semántica
Blog de SEO / Semantic
El concepto de agregación se discutió de nuevo en el blog, pero desde otro ángulo. De hecho, decidí explorar la funcionalidad de Gephi para generar la cartografía de un universo semántico. El objetivo es visualizar tanto el valor de una palabra clave (volumen de búsqueda) y cómo está conectado a otras palabras clave (similitud semántica)
En el post anterior he presentado un método basado en el algoritmo K-means para particionar un corpus de palabras clave. Aunque es muy fácil acceso, este método tiene la desventaja de tener que saber de antemano el número de grupos que desea crear. Sin superior.
Así que continué mi investigación: La primera vez que compré el libro Massih-Reza Amini y Eric Gaussuier, Búsqueda de Información - Aplicaciones, modelos y algoritmos. minería de datos, y la toma de datos grande, que dedica un capítulo muy interesante a la partición de datos, y en paralelo, yo estaba interesado en Gephi más cerca. Saqué una metodología concreta para la visualización de un conjunto de palabras clave, con base en el coeficiente de Dice y en Gephi y algoritmos de agrupamiento embebidos.
Paso 1: recuperar palabras clave y su volumen de búsquedas
El primer paso será, por supuesto, para recuperar el máximo de palabras clave en el tema que desea estudiar. Por esto, no voy a entrar en detalles, uso Palabras clave Planner, SEMrush o cualquier otra herramienta que le puede dar una coincidencia entre una palabra clave y un volumen de búsquedas mensuales.Formatear el archivo de la siguiente manera: una primera columna titulada "Id", una segunda columna "Etiqueta" y una columna pasada "Peso". En la primera columna se incluyen las palabras clave en la segunda columna, las palabras clave de nuevo (copia simple / pegar) y en la tercera columna de los volúmenes de búsqueda. Guarde el archivo CSV con el nombre nodes.csv. El archivo de "nodos" está listo para ser importado en Gephi. Vamos a volver ahora.
Paso 2: Se calcula la similitud entre cada palabra clave
Normalizar palabra clave
Antes de pasar al cálculo de la similitud, vamos a proceder en primer lugar a un conjunto de pre-tratamiento, Ruby, que nos permitirá consolidar mejor nuestras palabras clave. Utilizando los mismos conjunto de datos como en el artículo anterior, vamos a almacenar en una matriz.
keywords = ["consultant seo","référencement naturel","expert seo","referencement naturel","consultant referencement","consultant référencement","agence de référencement","agence seo","consultant en référencement","expert referencement","agence référencement","consultant référencement naturel","agence referencement","consultant en referencement","agence de referencement","référencement seo","experts referencement","référenceur freelance","consultant référencement internet","expert référencement","consultant referencement naturel","consultant en référencement naturel","conseil seo","referenceur freelance","spécialiste référencement naturel","search engine optimization for dummies","seo referencement","consultant en referencement naturel","devis referencement","top seo company","expert référencement naturel"]
El primer paso es transformar cada frase de palabras clave en fichas. Esta es la manera de proceder: corté cada cuerda tan pronto como encuentre un espacio.def get_tokens_from(string)
tokens = string.split(' ')
tokens
end
Una vez que la tokenización se ha hecho, voy a conseguir en una base de datos lema (ver mi artículo sobre el análisis semántico), la correspondencia entre cada símbolo y lema. También utilizo el marco Tratar de determinar la categoría morfosintáctica de cada palabra y de este modo eliminar la ambigüedad cuando son posibles varios lemas para una sola ficha.El siguiente método se encuentra en la base de datos por cada ficha, el lema asociado con él, entonces todas las tiendas en una tabla y elimina los acentos y palabras vacías (dos funciones simples se utilizan para estas operaciones, y remove_accents_from delete_stop_words_from, no voy a detallar aquí).
.
def get_lemmatised_words_from(tokens)
keywords = Array.new(0)
tokens.each do |w|
begin
word_str = $client.escape(w)
rows = $client.query("SELECT lemma,word,category
FROM lemmas
WHERE word = '#{word_str}' COLLATE utf8_bin
AND category = '#{w.category}'
LIMIT 1")
if rows.size > 0
keywords << remove_accents_from(rows.map{ |row| row["lemma"] }.first)
else
keywords << remove_accents_from(word_str)
end
rescue => e
puts "#{w} => #{e}"
next
end
end
delete_stop_words_from(keywords)
end
Calcular el coeficiente de Dice
Ahora podemos pasar a la primera etapa de la partición. Como se explica en el libro Massih-Reza Amini y Eric Gaussuier, cuando se trabaja de partición, el primer paso es elegir "una medida de similitud" entre los documentos. Varias medidas de similitud se presentan en este libro, incluyendo el coeficiente de dados, que utilicé para mi análisis. Es lo suficientemente cerca del índice de Jaccard y se calcula dividiendo el doble de la intersección de dos conjuntos, la unión de estos dos conjuntos.El método a continuación examina cada palabra clave, calcula su similitud uno por uno a través del coeficiente de Dice y almacena los resultados en una tabla.
.
def get_results_from(data)
results = Array.new(0)
data.each do |k, v|
data.dup.each do |kb, vb|
dice = 2 * (v & vb).count.to_f / (v.count + vb.count)
dice = dice.round(2)
results << [k, kb, dice]
end
end
results
end
Ya sólo queda crear el archivo edges.csv, que indican el grado en Gephi "atracción" entre cada nodo.
def make_edges_csv_file_from(array)
CSV.open("./edges.csv", "wb", {:col_sep => ";"}) do |csv|
csv << ["source", "target", "weight"]
array.each do |row|
csv << [row[0], row[1], row[2]]
end
end
end
Y aquí, ahora tenemos todos los datos necesarios, van a la utilización de Gephi! Para los interesados, el código completo aquí: https://gist.github.com/ABrisset/661a87fb11a16807cf4ae984e7df8c13.Paso 3: Ver datos en Gephi
Importación de datos
Abra Gephi, haga clic en "Archivo> Nuevo proyecto" y luego ir a "Laboratorio de datos" y haga clic en "Importar hoja de cálculo".Ir a buscar a su archivo edges.csv. Es él quien le dirá Gephi qué grado de atracción entre cada par de palabras. Seleccione "Como una mesa de enlace", seleccionar el separador de la derecha, y luego haga clic en Siguiente. En la siguiente ventana, seleccione "Crear nodos que falta" y haga clic en "Finalizar".
Bordes - Gephi
A continuación, repita la misma operación, pero esta vez para los nodos. Debe seleccionar "A medida que los nodos de la tabla", a continuación, a la siguiente ventana, llenar "Entero" como el tipo de datos para el campo "Peso" y asegúrese de desactivar "Forzar a los nodos importados para ser nuevos nodos" .
Gracias a la columna "ID" de los nodos de archivos, Gephi es capaz de identificar qué nodos de la conexión "Fuente" y "destino".
Jugar con los parámetros de Gephi
El último paso es personalizar los nodos y enlaces de acuerdo con nuestro objetivo de la agrupación. Vaya a "Información general".En primer lugar, ejecute el algoritmo de "modularidad" a través del panel de la derecha. Esto ayuda a identificar las comunidades en una estructura gráfica. Más información aquí. A continuación, en el panel izquierdo, haga clic en "partición" y "nudos" y seleccione "La modularidad de clase". Se encontraron tres grupos diferentes: los nodos son de color de acuerdo a su "comunidad" de unión.
Cambiar a la pestaña "Orden", seleccione "nudos" y "Altura / Peso", seleccione "Peso": los nodos son ahora el tamaño proporcional del volumen de búsquedas. Puede hacer lo mismo para el tamaño de las etiquetas.
Sólo queda por añadir un poco de espacio. Para ello, utilice la fuerza Atlas 2, con los siguientes parámetros.
Exportación de la visualización
Deje Atlas Force girar unos momentos. Ahora pestaña Dirección "Vista". Debe obtener la visualización más adelante, con 3 grupos:- palabras clave de todo de referencia + todo
- palabras clave de todo "SEO"
- palabras clave de todo "SEO" + "agencia" + "natural", etc.
Consejo: abra la imagen en una nueva pestaña y descargar la extensión de Chrome SVG Navegador para hacer un zoom;)
¿Qué opinas de este punto de vista? En lo personal, creo que es una buena manera de un lado temática e identificar rápidamente los sitios prioritarios de SEO, es decir, los territorios semánticos en los que centrar sus esfuerzos.
Creo, sin embargo, que podríamos obtener una mejor granularidad comparación de n-gramas ellos, no sólo palabras. A seguir ;)
No hay comentarios:
Publicar un comentario