diff --git a/spacy/lang/pt/lex_attrs.py b/spacy/lang/pt/lex_attrs.py index db54a1631..fa80cde73 100644 --- a/spacy/lang/pt/lex_attrs.py +++ b/spacy/lang/pt/lex_attrs.py @@ -1,21 +1,38 @@ # coding: utf8 from __future__ import unicode_literals +from ...attrs import LIKE_NUM -# Number words -NUM_WORDS = set(""" -zero um dois três quatro cinco seis sete oito nove dez onze doze treze catorze -quinze dezasseis dezassete dezoito dezanove vinte trinta quarenta cinquenta -sessenta setenta oitenta noventa cem mil milhão bilião trilião quadrilião -""".split()) +_num_words = ['zero', 'um', 'dois', 'três', 'quatro', 'cinco', 'seis', 'sete', + 'oito', 'nove', 'dez', 'onze', 'doze', 'treze', 'catorze', + 'quinze', 'dezasseis', 'dezassete', 'dezoito', 'dezanove', 'vinte', + 'trinta', 'quarenta', 'cinquenta', 'sessenta', 'setenta', + 'oitenta', 'noventa', 'cem', 'mil', 'milhão', 'bilião', 'trilião', + 'quadrilião'] -# Ordinal words +_ord_words = ['primeiro', 'segundo', 'terceiro', 'quarto', 'quinto', 'sexto', + 'sétimo', 'oitavo', 'nono', 'décimo', 'vigésimo', 'trigésimo', + 'quadragésimo', 'quinquagésimo', 'sexagésimo', 'septuagésimo', + 'octogésimo', 'nonagésimo', 'centésimo', 'ducentésimo', + 'trecentésimo', 'quadringentésimo', 'quingentésimo', 'sexcentésimo', + 'septingentésimo', 'octingentésimo', 'nongentésimo', 'milésimo', + 'milionésimo', 'bilionésimo'] -ORDINAL_WORDS = set(""" -primeiro segundo terceiro quarto quinto sexto sétimo oitavo nono décimo -vigésimo trigésimo quadragésimo quinquagésimo sexagésimo septuagésimo -octogésimo nonagésimo centésimo ducentésimo trecentésimo quadringentésimo -quingentésimo sexcentésimo septingentésimo octingentésimo nongentésimo -milésimo milionésimo bilionésimo -""".split()) + +def like_num(text): + text = text.replace(',', '').replace('.', '') + if text.isdigit(): + return True + if text.count('/') == 1: + num, denom = text.split('/') + if num.isdigit() and denom.isdigit(): + return True + if text in _num_words: + return True + return False + + +LEX_ATTRS = { + LIKE_NUM: like_num +}