Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Portuguese Language #2790

Merged
merged 5 commits into from
Sep 29, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions spacy/lang/pt/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@
from .lex_attrs import LEX_ATTRS
from .lemmatizer import LOOKUP
from .tag_map import TAG_MAP
from .norm_exceptions import NORM_EXCEPTIONS

from ..tokenizer_exceptions import BASE_EXCEPTIONS
from .punctuation import TOKENIZER_INFIXES, TOKENIZER_PREFIXES
from ..norm_exceptions import BASE_NORMS
from ...language import Language
from ...attrs import LANG, NORM
Expand All @@ -17,13 +19,14 @@
class PortugueseDefaults(Language.Defaults):
lex_attr_getters = dict(Language.Defaults.lex_attr_getters)
lex_attr_getters[LANG] = lambda text: 'pt'
lex_attr_getters[NORM] = add_lookups(Language.Defaults.lex_attr_getters[NORM], BASE_NORMS)
lex_attr_getters[NORM] = add_lookups(Language.Defaults.lex_attr_getters[NORM], BASE_NORMS, NORM_EXCEPTIONS)
lex_attr_getters.update(LEX_ATTRS)
tokenizer_exceptions = update_exc(BASE_EXCEPTIONS, TOKENIZER_EXCEPTIONS)
stop_words = STOP_WORDS
lemma_lookup = LOOKUP
tag_map = TAG_MAP

infixes = TOKENIZER_INFIXES
prefixes = TOKENIZER_PREFIXES

class Portuguese(Language):
lang = 'pt'
Expand Down
2 changes: 1 addition & 1 deletion spacy/lang/pt/lex_attrs.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@


def like_num(text):
text = text.replace(',', '').replace('.', '')
text = text.replace(',', '').replace('.', '').replace('º','').replace('ª','')
if text.isdigit():
return True
if text.count('/') == 1:
Expand Down
23 changes: 23 additions & 0 deletions spacy/lang/pt/norm_exceptions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# coding: utf8
from __future__ import unicode_literals

# These exceptions are used to add NORM values based on a token's ORTH value.
# Individual languages can also add their own exceptions and overwrite them -
# for example, British vs. American spelling in English.

# Norms are only set if no alternative is provided in the tokenizer exceptions.
# Note that this does not change any other token attributes. Its main purpose
# is to normalise the word representations so that equivalent tokens receive
# similar representations. For example: $ and € are very different, but they're
# both currency symbols. By normalising currency symbols to $, all symbols are
# seen as similar, no matter how common they are in the training data.


NORM_EXCEPTIONS = {
"R$": "$", # Real
"r$": "$", # Real
"Cz$": "$", # Cruzado
"cz$": "$", # Cruzado
"NCz$": "$", # Cruzado Novo
"ncz$": "$" # Cruzado Novo
}
18 changes: 18 additions & 0 deletions spacy/lang/pt/punctuation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# coding: utf8
from __future__ import unicode_literals

from ..punctuation import TOKENIZER_PREFIXES as BASE_TOKENIZER_PREFIXES
from ..punctuation import TOKENIZER_SUFFIXES as BASE_TOKENIZER_SUFFIXES
from ..punctuation import TOKENIZER_INFIXES as BASE_TOKENIZER_INFIXES

_prefixes = ([r'\w{1,3}\$'] + BASE_TOKENIZER_PREFIXES)

_suffixes = (BASE_TOKENIZER_SUFFIXES)

_infixes = ([r'(\w+-\w+(-\w+)*)'] +
BASE_TOKENIZER_INFIXES
)

TOKENIZER_PREFIXES = _prefixes
TOKENIZER_SUFFIXES = _suffixes
TOKENIZER_INFIXES = _infixes
67 changes: 33 additions & 34 deletions spacy/lang/pt/stop_words.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,67 +3,66 @@


STOP_WORDS = set("""
à às acerca adeus agora ainda algo algumas alguns ali além ambas ambos ano
anos antes ao aos apenas apoio apoia apontar após aquela aquelas aquele aqueles
aqui aquilo área as assim através atrás até aí
à às área acerca ademais adeus agora ainda algo algumas alguns ali além ambas ambos antes
ao aos apenas apoia apoio apontar após aquela aquelas aquele aqueles aqui aquilo
as assim através atrás até aí

baixo bastante bem boa bom breve

cada caminho catorze cedo cento certamente certeza cima cinco coisa com como
comprido comprida conhecida conhecido conselho contra corrente custa cá
comprida comprido conhecida conhecido conselho contra contudo corrente cuja
cujo custa cá

da daquela daquele dar das de debaixo demais dentro depois desde desligada
desligado dessa desse desta deste deve devem deverá dez dezanove dezasseis
dezassete dezoito dia diante direita diz dizem dizer do dois dos doze duas dá
dão dúvida
da daquela daquele dar das de debaixo demais dentro depois des desde dessa desse
desta deste deve devem deverá dez dezanove dezasseis dezassete dezoito diante
direita disso diz dizem dizer do dois dos doze duas dá dão

é ela elas ele eles em embora enquanto entre então era és essa essas esse esses
esta estado estar estará estas estava este estes esteve estive estivemos
estiveram estiveste estivestes estou está estás estão eu exemplo
é és ela elas ele eles em embora enquanto entre então era essa essas esse esses esta
estado estar estará estas estava este estes esteve estive estivemos estiveram
estiveste estivestes estou está estás estão eu eventual exemplo

falta fará favor faz fazeis fazem fazemos fazer fazes fazia faço fez fim final
foi fomos for fora foram forma foste fostes fui

geral grande grandes grupo

hoje horas há
inclusive iniciar inicio ir irá isso isto

iniciar inicio ir irá isso isto já

lado ligado local logo longe lugar lá
lado lhe ligado local logo longe lugar lá

maior maioria maiorias mais mal mas me meio menor menos meses mesmo meu meus
mil minha minhas momento muito muitos máximo mês
maior maioria maiorias mais mal mas me meio menor menos meses mesmo meu meus mil
minha minhas momento muito muitos máximo mês

na nada naquela naquele nas nem nenhuma nessa nesse nesta neste no noite nome
nos nossa nossas nosso nossos nova novas nove novo novos num numa nunca nuns
não nível nós número números
na nada naquela naquele nas nem nenhuma nessa nesse nesta neste no nos nossa
nossas nosso nossos nova novas nove novo novos num numa nunca nuns não nível nós
número números

obra obrigada obrigado oitava oitavo oito onde ontem onze os ou outra outras
outro outros
obrigada obrigado oitava oitavo oito onde ontem onze ora os ou outra outras outros

para parece parte partir pegar pela pelas pelo pelos perto pessoas pode podem
poder poderá podia ponto pontos por porque porquê posição possivelmente posso
possível pouca pouco povo primeira primeiro próprio próxima próximo puderam pôde
põe põem
para parece parte partir pegar pela pelas pelo pelos perto pode podem poder poderá
podia pois ponto pontos por porquanto porque porquê portanto porém posição
possivelmente posso possível pouca pouco povo primeira primeiro próprio próxima
próximo puderam pôde põe põem

qual qualquer quando quanto quarta quarto quatro que quem quer querem quero
quais qual qualquer quando quanto quarta quarto quatro que quem quer querem quero
questão quieta quieto quinta quinto quinze quê

relação

sabe saber se segunda segundo sei seis sem sempre ser seria sete seu seus sexta
sexto sim sistema sob sobre sois somente somos sou sua suas são sétima sétimo
sexto sim sistema sob sobre sois somente somos sou sua suas são sétima sétimo

tal talvez também tanta tanto tarde te tem temos tempo tendes tenho tens tentar
tentaram tente tentei ter terceira terceiro teu teus teve tipo tive tivemos
tiveram tiveste tivestes toda todas todo todos trabalhar trabalho treze três tu
tua tuas tudo tão têm
tais tal talvez também tanta tanto tarde te tem temos tempo tendes tenho tens
tentar tentaram tente tentei ter terceira terceiro teu teus teve tipo tive
tivemos tiveram tiveste tivestes toda todas todo todos treze três tu tua tuas
tudo tão têm

último um uma umas uns usa usar
um uma umas uns usa usar último

vai vais valor veja vem vens ver verdade verdadeira verdadeiro vez vezes viagem
vinda vindo vinte você vocês vos vossa vossas vosso vossos vários vão vêm vós
vai vais valor veja vem vens ver vez vezes vinda vindo vinte você vocês vos vossa
vossas vosso vossos vários vão vêm vós

zero
""".split())
2 changes: 1 addition & 1 deletion spacy/lang/pt/tokenizer_exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
for orth in [
"Adm.", "Dr.", "e.g.", "E.g.", "E.G.", "Gen.", "Gov.", "i.e.", "I.e.",
"I.E.", "Jr.", "Ltd.", "p.m.", "Ph.D.", "Rep.", "Rev.", "Sen.", "Sr.",
"Sra.", "vs."]:
"Sra.", "vs.", "tel.", "pág.", "pag."]:
_exc[orth] = [{ORTH: orth}]


Expand Down