2017-09-14 5 views
1

j'ai une certaine liste/dictionnaire des noms de fruits comme ci-dessous:PNL :: entités Extraire et leurs valeurs de chaîne en Python

fruits = ["Banana","Apples","Oranges"] 

Ceci est juste une liste d'exemples, il peut y avoir beaucoup plus de fruits dans ce . Mon texte d'entrée ressemble ci-dessous:

text1 = " I want to 2 Apples and 3 Bananas" 
text2 = " I need Apples 2, Bananas 5" 
text3 = "want to have 1 orange" 

Je veux souligner que ma chaîne d'entrée est un texte à écoulement libre et par conséquent ne suit pas tout certain format.

Problème: Je veux analyser la chaîne et obtenir une table/liste avec quelle quantité de quel fruit j'ai. La quantité peut être avant ou après le fruit. Ci-dessous, peut être considérée comme sortie pour l'entrée « text1 » Je veux:

Apple 2 

Banana 3 

Je suis passé par des déclarations de problèmes similaires dans divers liens mais la chaîne d'entrée a certain format que mon problème ne fonctionne pas. Certains des liens que je suis passé par sont:

python: extracting variables from string templates

How to extract variable name and value from string in python

extracting key value pairs from a string containing escaped characters

get python dictionary from string containing key value pairs

+0

Vous avez trois bananes dans text1 mais vous voulez en sortie 1. Est-ce une faute de frappe? – Psytho

+0

Oui c'est !! Je vais éditer la question. Merci!! –

Répondre

0

Si les données sont totalement non structurées, mais la peine, vous pourriez devoir aller la route nlp. Mais si vous êtes d'accord avec certaines hypothèses de base, vous pouvez essayer de contourner cela.

Par exemple:

1) Est-ce que chaque fruit viennent avec une quantité numérique?

2) Pouvez-vous avoir d'autres nombres de charabia dans la chaîne?

Example: 1 4 5 Apple 1 

Si vous pouvez appliquer des règles de base comme un fruit est livré avec un numéro et ce nombre est le nombre le plus proche (avant ou après), vous pouvez extraire les positions des nombres et des fruits, puis prendre le départ du numéro le plus proche de gauche

text1 = " I want to 2 Apples and 3 Bananas" -> [2, Apple, 3, Banana] 

text2 = " I need Apples 2, Bananas 5" -> [Apple, 2, Banana, 5] 

text3 = "want to have 1 orange" -> [1, Orange] 
+0

Est-ce que chaque fruit vient avec une quantité numérique? - Oui –