2011-03-28 17 views
5

Python: La agrupación de motor de búsqueda Palabras clavePython: La agrupación de motor de búsqueda Palabras clave

Hola, tengo una CSV, hasta 20.000 filas (que he tenido 100.000 + para diferentes sitios web), cada fila que contiene una palabra clave de referencia (es decir, una palabra clave que alguien escribió en un motor de búsqueda para encontrar el sitio web en cuestión), y una serie de visitas.

Lo que quiero hacer es agrupar estas palabras clave en grupos de "significado similar" y crear una jerarquía de los clústeres (estructurados en orden de suma total de búsquedas por clúster).

Un ejemplo de clúster - "Ropa de las mujeres" - lo ideal sería contener palabras clave a lo largo de estas líneas: Ropa de las mujeres, desgaste 1000 damas, 300 ropa de mujer, 50 damas ropa, 6 las mujeres usa, 2

Podría utilizar algo como el Kit de herramientas de lenguaje natural de Python: http://www.nltk.org/ y WordNet, pero, supongo que para algunos sitios web las palabras clave que se refieren serán palabras/frases de las que WordNet no sabe nada. Por ejemplo, si el sitio web es famoso, es poco probable que WordNet sepa algo sobre "Lady Gaga", situación peor si el sitio web es un sitio web de noticias.

Por lo tanto, también estoy adivinando que la solución tiene que ser una que busque usar solo los datos fuente en sí.

Mi consulta es muy similar a la planteada en How to cluster search engine keywords?, solo estoy buscando un lugar para comenzar pero usando Python en lugar de Java.

También me pregunté si Google Predict y/o Google Refine podrían ser de alguna utilidad.

De todos modos, cualquier pensamiento/sugerencias mayoría de la recepción,

Gracias, C

+0

no se puede dejar de vender mi propia [respuesta a una pregunta relacionada] (http://stackoverflow.com/questions/4787984/i-want-to-get-related-searches-or-keywords). – 9000

Respuesta

0

Bueno, yo soy un novato myself..But creo que la manera de hacerlo es NLTK y wordnet. (Como se ya lo dijo)

en primer lugar eliminar todos los números y caracteres especiales (básicamente limpiar las palabras clave)

Compruebe si hay coincidencias básicas de cuerda/subcadena coincide

Etiqueta etiquetas POS, (toma el etiquetador predeterminado como sustantivo) Si es distinto de un sustantivo, utiliza wordnet para obtener todos sus sinónimos homónimos y heterónimos y unirlos también. Si es un sustantivo a continuación, utilizar algunas técnicas básicas como una distancia lowest common substring match o lavenshtein, B/K Árbol etc.

Puede anidar los niveles de acuerdo a su necesidad de falsos positivos/negativos

En cuanto al alto nivel Agrupación puede usar un módulo de aprendizaje de máquina Python (como PyML, Reverend, etc.) y usar datos ya dados para entrenar ... como el google's ngram data on LDC

+0

Hola Rafi, gracias por responder, no del todo seguro de que entiendo completamente tu respuesta. Sin embargo, una pregunta: ¿cómo abordará este enfoque las palabras y frases "nuevas" que todavía no están en WordNet? – user679134

+0

Hola @ user679134..Para nuevas palabras o frases, puedes usar técnicas básicas como una coincidencia de subcadena común más baja, la distancia de lavenshtein, B/K Tree, etc. ... Creo que debería ser lo suficientemente bueno ... – Rafi

Cuestiones relacionadas