Descargo de responsabilidad : no sé nada de cómo funciona específicamente Google play, pero responderé esto principalmente en función de mi comprensión de los algoritmos, ya que creo que el aprendizaje automático y el análisis de sentimientos, aunque es una herramienta útil, es excesivo aquí.
Primero analicemos el enunciado del problema: queremos encontrar la subcadena más recurrente en un corpus (el corpus es el conjunto completo de tokens en un orden específico según la revisión de Google Play). Para facilitar la comprensión, definamos “token” como un conjunto de caracteres separados por espacios en blanco. Entonces, el enunciado del problema generalizado es: ¿Cómo encuentra el orden más recurrente de tokens en una cadena dada?
Solución de fuerza bruta : trocee todo el conjunto posible de subcadenas consecutivas por comentario y haga un mapa de subcadenas para contar el número de ocurrencias y ordenarlas. Esto es ridículamente ineficiente ya que calcular todas estas subcadenas lleva a Theta (n ^ 2) $ tiempo. ¿Cómo?
- Cómo entender un algoritmo de búsqueda CSP
- ¿Cuál es el mejor y más fácil algoritmo de búsqueda?
- ¿Por qué es Introducción a los algoritmos una lectura obligada para convertirse en un mejor programador?
- ¿Habrá diferentes algoritmos para implementar la inserción y eliminación de una estructura de datos como b árboles?
- Conozco la implementación básica de diferentes estructuras de datos como árboles, gráficos, colas y muchos más para inserción, eliminación, recorrido. Ahora, ¿cómo procedo a construir un sistema operativo?
- crea una ventana de subcadena de tamaño n, donde n = # de tokens
- Luego crea una ventana de tamaño n – 1 y calcula substr (0, n-1) y substr (1, n)
- Luego crea una ventana de tamaño n – 2 y calcula substr (0, n-2) y substr (1, n-1) y substr (2, n), etc.
Usando el conocimiento de enumeración esto se convierte en un resumen:
n + 2 (n – 1) + 3 (n-2) + 4 (n-3) +….
que es Theta (n ^ 2)
Una solución más eficiente (probablemente la correcta) : la versión general de este problema algorítmico se resuelve utilizando un sufijo trie, como dice la descripción de la pregunta. Normalmente, los intentos de sufijo se construyen con caracteres, pero en este caso específico, construyamos un trie de sufijo PATRICIA / compact (árbol de sufijos – Wikipedia) que toma tiempo Theta (n) (usando el algoritmo de Ukkonen – Wikipedia). Ahora vamos a alimentar los tokens del corpus completo en esta estructura de datos. Un sufijo trie por aplicación. Ahora solo encuentra la subcadena más frecuente y cuántas veces ocurre se encuentra directamente en el trie 🙂 Cool eh? En general Theta (n) tiempo y espacio.
Ah, sí, y también, debes deshacerte de los artículos y conectores y otras cosas de una manera inteligente, por lo que probablemente necesites algo de PNL (pero eso está más allá del alcance de lo que sé). Si estás tratando de implementar esto por tu cuenta, solo usar el módulo de parte de voz de Python NLTK
Aclararé más si esto no está claro.