python - stopwords - Extraiga la lista de compras del texto libre
nltk stopwords (2)
Estoy buscando una biblioteca / algoritmo / papel de Python para extraer una lista de comestibles de texto libre.
Por ejemplo:
"Una ensalada y dos cervezas"
Debería convertirse a:
{''salad'':1, ''beer'': 2}
Sugiero usar WordNet . Puede llamarlo desde Java (biblioteca JWNL), etc. Aquí está la sugerencia: para cada palabra, compruebe que es hipernym. Para comestibles en el nivel superior de la jerarquía hypernymy encontrará "alimentos, nutrientes". Que es probablemente lo que quieres Ahora para probar esto, consulte la palabra "cerveza" en la versión en línea . Haga clic en "S", y luego haga clic en "hypernym heredado". Encontrarás esto en algún lugar de la jerarquía:
....
S: (n) beverage, drink, drinkable, potable (any liquid suitable for drinking) "may I take your beverage order?"
S: (n) food, nutrient (any substance that can be metabolized by an animal to give energy and build tissue)
....
Puede recorrer esta jerarquía usando el lenguaje de programación que elija, etc. Una vez que haya marcado todos los comestibles, puede capturar el número, es decir, 2 en "2 cervezas", y tiene toda la información que necesita. Tenga en cuenta que capturar los números en sí mismo puede ser una tarea de codificación de descenso. ¡Espero eso ayude!
In [1]: from word2number import w2n
In [2]: print w2n.word_to_num("One")
1
In [3]: print w2n.word_to_num("Two")
2
In [4]: print w2n.word_to_num("Thirty five")
35
Puede convertir al número con el uso de este paquete y el resto de cosas que puede implementar según sus necesidades.
Instalación de este paquete
pip install word2number
Actualizar
Puedes implementar de esta manera.
from word2number import w2n
result = {}
input = "One salad and two beers"
b = input.split()
for i in b:
if type(w2n.word_to_num(i)) is int:
result[b[b.index(i)+1]] = w2n.word_to_num(i)
Resultado
{''cervezas'': 2, ''ensalada'': 1}