2 votes

Extraction d'informations spécifiques à partir de données

Comment puis-je convertir un format de données tel que :

James Smith was born on November 17, 1948

en quelque chose comme

("James Smith", DOB, "November 17, 1948")

sans avoir à se fier à l'index positionnel des chaînes de caractères

J'ai essayé ce qui suit

from nltk import word_tokenize, pos_tag

new = "James Smith was born on November 17, 1948"
sentences = word_tokenize(new)
sentences = pos_tag(sentences)
grammar = "Chunk: {<NNP*><NNP*>}"
cp = nltk.RegexpParser(grammar)
result = cp.parse(sentences)
print(result)

Comment procéder pour obtenir le résultat dans le format souhaité.

1voto

Bhaskara Arani Points 466

Diviser la chaîne avec "est né le" après avoir coupé les espaces et l'assigner au nom et à l'âge.

1voto

zawata Points 172

Vous pouvez toujours utiliser des expressions régulières. La regex (\S+)\s(\S+)\s\bwas born on\b\s(\S+)\s(\S+),\s(\S+) correspondra et renverra des données provenant spécifiquement du format de chaîne ci-dessus.

Le voici en action : https://regex101.com/r/W2ykKS/1

Regex en python :

import re

regex = r"(\S+)\s(\S+)\s\bwas born on\b\s(\S+)\s(\S+),\s(\S+)"
test_str = "James Smith was born on November 17, 1948"

matches = re.search(regex, test_str)

# group 0 in a regex is the input string

print(matches.group(1)) # James
print(matches.group(2)) # Smith
print(matches.group(3)) # November
print(matches.group(4)) # 17
print(matches.group(5)) # 1948

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X