Cómo crear una buena lista de palabras vacías

9

Estoy buscando algunos consejos sobre cómo curar una lista de palabras vacías. ¿Alguien sabe / alguien puede recomendar un buen método para extraer listas de palabras clave del conjunto de datos para el preprocesamiento y el filtrado?

Los datos:

una gran cantidad de entrada de texto humano de longitud variable (términos de búsqueda y oraciones completas (hasta 200 caracteres)) durante varios años. El texto contiene una gran cantidad de spam (como la entrada de máquinas de bots, palabras sueltas, búsquedas estúpidas, búsquedas de productos ...) y solo un pequeño porcentaje parece ser útil. Me di cuenta de que a veces (solo muy raramente) las personas buscan mi lado haciendo preguntas realmente geniales. Estas preguntas son tan geniales, que creo que vale la pena echarles un vistazo más profundo para ver cómo las personas buscan a lo largo del tiempo y qué temas han estado interesados ​​en usar mi sitio web.

Mi problema:

es que realmente estoy luchando con el preprocesamiento (es decir, descartar el spam). Ya probé una lista de palabras vacías de la web (NLTK, etc.), pero estas realmente no ayudan a mis necesidades con respecto a este conjunto de datos.

¡Gracias por sus ideas y discusión amigos!

Etiqueta
fuente
1
El módulo NLTK de Python proporciona datos de palabras vacías y, si no lo ayudó, mejor proporcionará más información sobre su conjunto de datos. ¿Por qué no fue útil en su caso?
Kasra Manshaei
@kasramsh: cuando filtré para estos SW tuve la impresión de que esto no filtraba significativamente el spam. Creo que la razón es que estas listas se generan en textos naturales (no estoy seguro) y, por lo tanto, no se pueden utilizar para palabras de búsqueda y consultas del sitio. Al igual que cuando agrupa (basado en la similitud de la cadena de búsqueda) tuve la impresión de que el correo no deseado tiene un fuerte efecto a nivel de entropía y, por lo tanto, está mezclando el resultado final: - /.
PlagTag
1
Creo que @PlagTag no entiendo qué es stop words. Stop-wrods es una lista de la mayoría de las palabras comunes en algún lenguaje, por ejemplo I, the, ay así sucesivamente. Simplemente eliminará estas palabras de su texto antes de comenzar a entrenar su algoritmo que intenta identificar qué texto es spam o no. No le ayudó a identificar qué texto es spam o no, puede mejorar su algoritmo de aprendizaje.
itdxer
@itdxer, gracias por tu comentario. Usé el término stopwords aquí en una extensión más amplia (ya que pensé que podría estar bien para ese propósito). Gracias por aclarar el problema ;-)
PlagTag

Respuestas:

5

Un enfoque sería utilizar la puntuación tf-idf . Las palabras que aparecen en la mayoría de las consultas serán de poca ayuda para diferenciar las buenas consultas de búsqueda de las malas. Pero los que ocurren con mucha frecuencia (frecuencia tf alta o frecuencia de término) en solo unas pocas consultas (idf alta o frecuencia de documento inversa) probablemente sean más importantes para distinguir las consultas buenas de las malas.

Shagun Sodhani
fuente
Muchas gracias, voy a probar este e informar aquí!
PlagTag
en realidad, un puntaje alto de la IDF sería suficiente
CpILL
2

Depende de su aplicación.

Cuando esté modelando temas, intente primero las palabras de parada predeterminadas. Cuando hay algunas palabras que aparecen de manera prominente en muchos temas (tenga en cuenta mi formulación bastante vaga), son buenas candidatas para palabras clave adicionales.

Por ejemplo, en un corpus con textos que contienen figuras y material tabular, las palabras "fig", "figure", "tab" o "table" son buenas palabras adicionales. En el resultado, sus temas se vuelven más bien definidos.


fuente
1

El uso de TFIDF (término frecuencia de documento inversa de resolución) resolverá su propósito. Obtenga el puntaje TFIDF para cada palabra en su documento y ordene las palabras por sus puntajes mediante los cuales puede seleccionar las palabras importantes en sus datos.

Thilak Adiboina
fuente
1

Un enfoque que he usado para construir una lista de palabras vacías es construir y entrenar un modelo de regresión logística (debido a su capacidad de interpretación) en sus datos de texto. Tome el valor absoluto de los coeficientes para cada ficha. Luego, ordena descendiendo el valor absoluto de los coeficientes de los tokens. Luego, cree una lista de todos los tokens con un valor absoluto de alto coeficiente que podría conducir a un sobreajuste o que podría cumplir con otros criterios para ser una palabra clave. Esa lista es tu lista de palabras vacías. Luego puede aplicar esa lista de palabras vacías a otro conjunto de documentos de este tipo (como un conjunto de prueba), para ver si eliminarlos aumenta la precisión, precisión o recuperación del modelo del conjunto de prueba.

Esta estrategia es efectiva porque tiene en cuenta el impacto de los tokens al crear una lista de palabras vacías.

dshefman
fuente
0

Las palabras vacías pueden ser parte de la solución en algún momento, pero no la clave. En cualquier caso, para cualquier idioma importante existen buenas listas de palabras de detención, no debe ser específico del dominio.

Tampoco creo que usar TD-IDF solo sea realmente correcto. Puede haber palabras muy raras (potencialmente basura) en cadenas de baja calidad.

En lugar de tratar de adivinar qué características exactas son útiles: comenzaría creando un conjunto de datos seleccionando al azar algunos de los datos y etiquetándolos a mano (como goodobad , o en una escala de 0.0 a 1.0). Luego codifique algo que extraiga muchas características (longitud, número de palabras (tokens), puntaje de spam, si contiene URL o caracteres de botish, idioma detectado, si tiene un signo de interrogación, si tiene las mayúsculas adecuadas). Además, no olvide incluir las características no lingüísticas que pueda tener, como el país del geoIP del usuario que realizó la consulta, si el usuario inició sesión, la antigüedad de la cuenta del usuario. Entonces, en este punto, tendrá una tabla / CSV masiva y una más pequeña con una columna adicional para la etiqueta que ha agregado.

Luego, entrene un paquete de aprendizaje automático con esos ejemplos etiquetados para construir un modelo que sea lo suficientemente preciso para usted. Luego, deje que ese modelo se ejecute en el resto de los datos.

Si no desea codificar demasiado, incluso puede obtener esas características en formato CSV y entregarlas a la interfaz de hoja de cálculo de la API de predicción de Google .

Adam Bittlingmayer
fuente