Estoy buscando información y teoría sobre cómo abordar un tema léxico.
Digamos que tengo una colección de cadenas, que pueden ser solo una oración o potencialmente múltiples oraciones. Me gustaría analizar estas cadenas y extraer las palabras más importantes, tal vez con una puntuación que denote la probabilidad de que la palabra sea importante.
Veamos algunos ejemplos de lo que quiero decir.
Ejemplo 1:
"Realmente quiero un Keurig, ¡pero no puedo pagarlo!"
Este es un ejemplo muy básico, solo una oración. Como humano, puedo ver fácilmente que "Keurig" es la palabra más importante aquí. Además, "pagar" es relativamente importante, aunque claramente no es el punto principal de la oración. La palabra "I" aparece dos veces, pero no es importante en absoluto, ya que realmente no nos da ninguna información. Podría esperar ver un hash de palabras / puntajes algo como esto:
"Keurig" => 0.9
"afford" => 0.4
"want" => 0.2
"really" => 0.1
etc...
Ejemplo # 2:
"Acabo de tener una de las mejores prácticas de natación de mi vida. Espero poder mantener mis tiempos en la competencia. Si tan solo hubiera recordado quitarme mi reloj no resistente al agua".
Este ejemplo tiene varias oraciones, por lo que habrá palabras más importantes en todo momento. Sin repetir el ejercicio de puntos del ejemplo # 1, probablemente esperaría ver dos o tres palabras realmente importantes que salgan de esto: "natación" (o "práctica de natación"), "competencia" y "reloj" (o "impermeable" ver "o" reloj no resistente al agua "dependiendo de cómo se maneje el guión).
Dado un par de ejemplos como este, ¿cómo harías para hacer algo similar? ¿Existen bibliotecas o algoritmos existentes (de código abierto) en la programación que ya lo hagan?