Как извлечь возраст и пол человека из необработанного текста / данных?
У меня есть файл CSV со списком текстов (столбец со строками), и я хочу извлечь возраст пациентов из каждой строки, я не могу сделать с "цифрой", потому что в текстах есть и другие цифры. как я могу это сделать? Спасибо
ДОПОЛНИТЕЛЬНО: я также хочу выделить пол - пациента иногда называют мужчиной / женщиной, иногда мужчиной / женщиной и иногда джентльменом / леди.
Есть ли способ написать findall, например, если текст 17-летней давности, напечатайте мне номер, если за ним следует -year-old
re.findall("[\d].", '-year-old')
Пример строк из текста:
This 23-year-old white female presents with...
...pleasant gentleman who is 42 years old...
...The patient is a 10-1/2-year-old born with...
...A 79-year-old Filipino woman...
Patient, 37,...
Как я могу получить список возраста / пола
то есть:
Age:
['23','42','79','37'...]
Gender:
['female','male','male','female','male'...]
2 ответа
Вы можете легко сделать это с помощью регулярного выражения (Regular Expression).
import re
# returns all numbers
age = re.findall("[\d].", your_text)
# returns all words related to gender
gender = re.findall("female|gentleman|woman", your_text)
Гендерная составляющая, для лечения которой вы можете использовать диктат, получите правильный ответ
gender_dict = {"male": ["gentleman", "man", "male"],
"female": ["female", "woman", "girl"]}
gender_aux = []
for g in gender:
if g in gender_dict['male']:
gender_aux.append('male')
elif g in gender_dict['female']:
gender_aux.append('female')
re_list = [
'\d*\-year-old',
'\d*\ year old'
]
matches = []
for r in re_list:
matches += re.findall( r, 'pleasant gentleman who is 42 years old, This 23-year-old white female presents with')
print(matches)
распечатывает:
['23-year-old', '42 year old']