Digamos que tengo un conjunto de palabras clave en una matriz { "Juegos Olímpicos", "pista de deportes mejores", "tenis", "reglas de tenis"}Algoritmo para ver si existen palabras clave dentro de una cadena
entonces he una gran lista (hasta 50 a la vez) de cadenas (o en realidad tweets), por lo que tienen un máximo de 140 caracteres.
Quiero ver cada cadena y ver qué palabras clave están presentes allí. En el caso en que una palabra clave se compone de varias palabras como "mejor tenis deportivo", las palabras no tienen que estar juntas en la cadena, pero todas tienen que aparecer.
Tengo problemas para encontrar un algoritmo que lo haga de manera eficiente.
¿Tienen alguna sugerencia sobre cómo hacerlo? ¡Gracias! Editar: Para explicar un poco mejor, cada palabra clave tiene una identificación asociada, así que {1: "olimpiadas", 2: "deportes mejor tenis", 3: "tenis", 4: "reglas de tenis"}
Quiero ir a través de la lista de cadenas/tweets y ver qué grupo de palabras clave coinciden. La salida debería ser, este tweet pertenece a la palabra clave # 4. (Se pueden hacer múltiples coincidencias, por lo que cualquier cosa que coincida con la palabra clave 2, también coincidiría con 3, ya que ambos contienen tenis).
Cuando hay varias palabras en la palabra clave, p. "tenis deportivo mejor" no tienen que aparecer juntos, pero tienen que aparecer todos. p.ej. esto coincidirá correctamente: "Acabo de jugar al tenis, me encanta el deporte, es el mejor" ... ya que esta secuencia contiene "mejor tenis deportivo" coincidirá y se asociará con la palabra clave ID (que es 2 para este ejemplo).
Edición 2: Insensible a las mayúsculas y minúsculas.
¿Cuál es su resultado deseado? La lista de cadenas que contienen las palabras clave? ¿O un recuento de cuántas veces existe cada palabra clave en una cadena? ¿O algo mas? –
¿Concordancia de subcadena o palabra completa? ¿Distingue mayúsculas y minúsculas? – RedFilter
Agregué algunas aclaraciones más arriba, coincidencia de palabras completas ... pero las palabras clave separadas por el espacio son equivalentes a un Y lógico. Entonces, "el mejor tenis deportivo" debe coincidir con una palabra clave con "deportes" Y "tenis" Y "mejor" – rksprst