Reconhecimento de Padrões em Texto com a Biblioteca recognizers-text em Python
Reconhecer padrões específicos em textos é uma tarefa comum no processamento de linguagem natural. A biblioteca recognizers-text
: reconhece números.recognizers_number()
: reconhece números ordinais.recognize_ordinal()
: reconhece valores percentuais.recognize_percentage()
: reconhece idades.recognize_age()
: reconhece valores monetários.recognize_currency()
: reconhece diferentes valores usados em medições.recognize_dimension()
: reconhece temperaturas.recognize_temperature()
: reconhece datas e horários.recognize_datetime()
: reconhece números de telefone.recognize_phone_number()
: reconhece endereços de e-mail.recognize_email()
: reconhece endereços IP.recognize_ip_address()
: reconhece URLs.recognize_url()
: reconhece GUIDs.recognize_guid()
Existe ainda o pacote unificado recognizers-text-suite
pip install recognizers-text-suite
No caso de conflitos com a biblioteca emoji
pip uninstall emoji pip install emoji==1.7
Funcionamento do Reconhecimento
A biblioteca utiliza funções específicas para reconhecer diferentes tipos de padrões. Todas essas funções aceitam dois parâmetros principais: o texto de entrada e a cultura linguística a ser usada no processamento. Como resultado, retornam uma lista de objetos ModelResult
Por exemplo, ao processar um texto para a cultura Culture.English
Exemplos de Uso
Reconhecimento de Números
A função recognize_number()
from recognizers_number import recognize_number, Culture
results = recognize_number("I have three apples and five oranges", Culture.English)
for result in results:
print(f"Texto reconhecido: {result.text}")
print(f"Índice inicial: {result.start}, Índice final: {result.end}")
print(f"Valor: {result.resolution['value']}")
Ao processar a frase acima, os números "three" e "five" serão mapeados como 3 e 5, respectivamente.
Reconhecimento de Números Ordinais
A função recognize_ordinal()
from recognizers_number import recognize_ordinal, Culture
results = recognize_ordinal("The fifth book", Culture.English)
for result in results:
print(result.resolution["value"]) # 5
Reconhecimento de Porcentagens
Percentuais são processados com recognize_percentage()
from recognizers_number import recognize_percentage, Culture
results = recognize_percentage("sixty-seven percents", Culture.English)
for result in results:
print(result.resolution["value"]) # 67
Reconhecimento de Idade
Para identificar idades, utiliza-se a função recognize_age()
from recognizers_number_with_unit import recognize_age, Culture
results = recognize_age("Tom is thirty-eight years old", Culture.English)
for result in results:
print(result.resolution["value"]) # 38
Reconhecimento de Moedas
A função recognize_currency()
recognizers_number_with_unit
from recognizers_number_with_unit import recognize_currency, Culture
results = recognize_currency("the sum was $ 15.4 million", Culture.English)
for result in results:
print(result.resolution["value"]) # 15400000
results = recognize_currency("1 BRL=0.16 EUR", Culture.English)
for result in results:
print(result.resolution["value"]) # 1 e 0.16
Reconhecimento de Dimensões e Unidades
Para pesos, medidas e distâncias, utiliza-se a função recognize_dimension():
from recognizers_number_with_unit import recognize_dimension, Culture
results = recognize_dimension("ten kg equals 22.046 pounds", Culture.English)
for result in results:
print(result.resolution["value"]) # 10 e 22.046
results = recognize_dimension("It took him half an hour to drive home from work. He averaged thirty-four miles per hour. ", Culture.English)
for result in results:
print(result.resolution["value"]) # 34
Reconhecimento de Temperaturas
Para identificar temperaturas em textos, utiliza-se a função recognize_temperature()
recognizers_number_with_unit
from recognizers_number_with_unit import recognize_temperature, Culture
results = recognize_temperature("The official highest recorded temperature is now 56.7°C (134°F), which was measured on 10 July 1913 at Greenland Ranch, Death Valley, California, USA", Culture.English)
for result in results:
print(result.resolution["value"]) # 56.7 e 134
Reconhecimento de Datas e Horários
Datas e horários podem ser extraídos com a função recognize_datetime()
from recognizers_date_time import recognize_datetime, Culture
results = recognize_datetime("I will go back 8pm today or 7am tomorrow", Culture.English)
for result in results:
for value in result.resolution["values"]:
print(value["value"])
Nesse caso, a frase processada retorna horários formatados como "2024-12-12 20:00:00" e "2024-12-13 07:00:00", com base na data atual.
Reconhecimento de Sequências
O módulo recognizers-sequence
from recognizers_sequence import recognize_phone_number, recognize_email, Culture
results = recognize_phone_number("Main contact: +1-234-567-8901", Culture.English)
for result in results:
print(result.resolution["value"]) # +1-234-567-8901
results = recognize_email("Second contact: tom@somemail.com", Culture.English)
for result in results:
print(result.resolution["value"]) # tom@somemail.com