quarta-feira, 27 de fevereiro de 2013

Aelius POS-Tagger 2013

Finalmente, está disponível no SourceForge a nova versão do Aelius Brazilian Portuguese POS-Tagger and Corpus Annotation Tool, que conta, agora, com um detalhado manual:

http://aelius.sourceforge.net/

O Aelius 2013 está muito mais poderoso. Entre outras coisas, consegue etiquetar morfossintaticamente  textos com base em três tag sets e vários algoritmos de aprendizagem de máquina! A etiquetagem morfossintática pelo Apache OpenNLP via Aelius é mais precisa do que pela própria ferramenta de etiquetagem do Apache OpenNLP porque o Aelius toqueniza corretamente as contrações e ênclises.

Palavras-chave: Linguística computacional. Processamento computacional do português. Toquenização. NLTK. Python. Etiquetagem morfossintática. Anotação de corpora linguísticos. 

Keywords: Computational linguistics. Shallow processing of Brazilian Portuguese. Tokenization. Tokenizing. NLTK. Python. POS-tagging. Part-of-speech tagging. Morpho-syntactic tagging. Corpus annotation.

quinta-feira, 7 de fevereiro de 2013

Caixas de ferramentas para o PLN

Panorama sucinto e principais bibliotecas para o processamento automático da linguagem natural que constituem software livre e de código aberto


Abaixo, uma descrição concisa e bem elaborada da função do processamento automático da linguagem natural no mundo empresarial, descrevendo algumas das principais bibliotecas (caixas de ferramentas) para execução de diversas tarefas de análise computacional de textos, as quais desempenham um papel cada vez mais importante no setor de tecnologia da informação:

http://osintegrators.com/opensoftwareintegrators%7Chowyoucanbenefitfromopensourcenaturallanguageprocessing

sexta-feira, 1 de fevereiro de 2013

Novos etiquetadores do Aelius

Exemplo de texto


Dois parágrafos iniciais de Luzia-Homem de Domingos Olímpio

O morro do Curral do Açougue emergia em suave declive da campina ondulada. Escorchado, indigente de arvoredo, o cômoro enegrecido pelo sangue de reses sem conto, deixara de ser o sítio sinistro do matadouro e a pousada predileta de bandos de urubutingas e camirangas vorazes.

Bateram-se os vastos currais, de grossos esteios de aroeira, fincados a pique, rijos como barras de ferro, currais seculares, obra ciclópica, da qual restava apenas, como lúgubre vestígio, o moirão ligeiramente inclinado, adelgaçado no centro, polido pelo contínuo atrito das cordas de laçar as vítimas, que a ele eram arrastadas aos empuxões, bufando, resistindo, ou entregando, resignadas e mansas, o pescoço à faca do magarefe. Ali, no sítio de morte, fervilhavam, então, em ruidosa diligência, legiões de operários construindo a penitenciária de Sobral.

Etiquetagem morfossintática pelo Aelius

Utilização do conjunto de etiquetas do Corpus Histórico do Português Tycho Brahe

>>> import os
>>> os.chdir("../analises")
>>> texto="luzia_inicio.txt"
>>> texto
'luzia_inicio.txt'
>>> print open(texto).read()
O morro do Curral do Açougue emergia em suave declive da campina ondulada. Escorchado, indigente de arvoredo, o cômoro enegrecido pelo sangue de reses sem conto, deixara de ser o sítio sinistro do matadouro e a pousada predileta de bandos de urubutingas e camirangas vorazes.

Bateram-se os vastos currais, de grossos esteios de aroeira, fincados a pique, rijos como barras de ferro, currais seculares, obra ciclópica, da qual restava apenas, como lúgubre vestígio, o moirão ligeiramente inclinado, adelgaçado no centro, polido pelo contínuo atrito das cordas de laçar as vítimas, que a ele eram arrastadas aos empuxões, bufando, resistindo, ou entregando, resignadas e mansas, o pescoço à faca do magarefe. Ali, no sítio de morte, fervilhavam, então, em ruidosa diligência, legiões de operários construindo a penitenciária de Sobral.





>>> from Aelius import Extras, Toqueniza, AnotaCorpus
>>> h=Extras.carrega("AeliusHunPos")
>>> AnotaCorpus.anota_texto(texto,h,"hunpos",Toqueniza.TOK_PORT)
Arquivo anotado:
luzia_inicio.hunpos.txt
>>> print open("luzia_inicio.hunpos.txt").read()
O/D morro/N do/P+D Curral/NPR do/P+D Açougue/N emergia/VB-D em/P suave/ADJ-G declive/N da/P+D-F campina/N ondulada/VB-AN-F ./.
Escorchado/VB-AN ,/, indigente/ADJ-G de/P arvoredo/N ,/, o/D cômoro/NPR enegrecido/VB-AN pelo/P+D sangue/N de/P reses/N-P sem/P conto/N ,/, deixara/VB-RA de/P ser/SR o/D sítio/N sinistro/N do/P+D matadouro/N e/CONJ a/D-F pousada/N predileta/ADJ-F de/P bandos/N-P de/P urubutingas/N-P e/CONJ camirangas/N-P vorazes/ADJ-G-P ./.


Bateram/VB-D -/+ se/SE os/D-P vastos/ADJ-P currais/N-P ,/, de/P grossos/ADJ-P esteios/N-P de/P aroeira/N ,/, fincados/VB-AN-P a/P pique/N ,/, rijos/ADJ-P como/CONJS barras/N-P de/P ferro/N ,/, currais/N-P seculares/ADJ-G-P ,/, obra/N ciclópica/ADJ-F ,/, da/P+D-F qual/WPRO restava/VB-D apenas/ADV ,/, como/CONJS lúgubre/ADJ-G vestígio/N ,/, o/D moirão/N ligeiramente/ADV inclinado/VB-AN ,/, adelgaçado/VB-AN no/P+D centro/N ,/, polido/VB-AN pelo/P+D contínuo/ADJ atrito/N das/P+D-F-P cordas/N-P de/P laçar/VB as/D-F-P vítimas/N-P ,/, que/WPRO a/P ele/PRO eram/SR-D arrastadas/VB-AN-F-P aos/P+D-P empuxões/N-P ,/, bufando/VB-G ,/, resistindo/VB-G ,/, ou/CONJ entregando/VB-G ,/, resignadas/VB-AN-F-P e/CONJ mansas/VB-AN-F-P ,/, o/D pescoço/N à/P+D-F faca/N do/P+D magarefe/N ./.
Ali/ADV ,/, no/P+D sítio/N de/P morte/N ,/, fervilhavam/VB-D ,/, então/ADV ,/, em/P ruidosa/ADJ-F diligência/N ,/, legiões/N-P de/P operários/N-P construindo/VB-G a/D-F penitenciária/N de/P Sobral/NPR ./.


Utilização do conjunto de etiquetas do corpus MAC-Morpho

>>> m=Extras.carrega("AeliusHunPosMM")
>>> AnotaCorpus.INFIXO="hunpos_macmorpho"
>>> AnotaCorpus.anota_texto(texto,m,"hunpos",Toqueniza.TOK_PORT_MM,separacao_contracoes=True)
Arquivo anotado:
luzia_inicio.hunpos_macmorpho.txt
>>> print open("luzia_inicio.hunpos_macmorpho.txt").read()
O/ART morro/N de/PREP|+ o/ART Curral/N de/PREP|+ o/ART Açougue/N emergia/V em/PREP suave/ADJ declive/N de/PREP|+ a/ART campina/N ondulada/PCP ./.
Escorchado/NPROP ,/, indigente/N de/PREP arvoredo/N ,/, o/ART cômoro/N enegrecido/PCP por/PREP|+ o/ART sangue/N de/PREP reses/N sem/PREP conto/N ,/, deixara/VAUX de/PREP ser/V o/ART sítio/N sinistro/ADJ de/PREP|+ o/ART matadouro/N e/KC a/ART pousada/N predileta/ADJ de/PREP bandos/N de/PREP urubutingas/N e/KC camirangas/N vorazes/ADJ ./.


Bateram/V se/KS os/ART vastos/ADJ currais/N ,/, de/PREP grossos/ADJ esteios/N de/PREP aroeira/N ,/, fincados/PCP a/ART pique/N ,/, rijos/PCP como/PREP barras/N de/PREP ferro/N ,/, currais/N seculares/ADJ ,/, obra/N ciclópica/ADJ ,/, de/PREP|+ a/PRO-KS-REL qual/PRO-KS-REL restava/V apenas/PDEN ,/, como/PREP lúgubre/ADJ vestígio/N ,/, o/ART moirão/N ligeiramente/ADV inclinado/PCP ,/, adelgaçado/PCP em/PREP|+ o/ART centro/N ,/, polido/PCP por/PREP|+ o/ART contínuo/ADJ atrito/N de/PREP|+ as/ART cordas/N de/PREP laçar/V as/ART vítimas/N ,/, que/PRO-KS-REL a/PREP ele/PROPESS eram/V arrastadas/PCP a/PREP|+ os/ART empuxões/N ,/, bufando/V ,/, resistindo/V ,/, ou/KC entregando/V ,/, resignadas/PCP e/KC mansas/PCP ,/, o/ART pescoço/N a/PREP|+ a/ART faca/N de/PREP|+ o/ART magarefe/N ./.
Ali/ADV ,/, em/PREP|+ o/ART sítio/N de/PREP morte/N ,/, fervilhavam/V ,/, então/ADV ,/, em/PREP ruidosa/ADJ diligência/N ,/, legiões/N de/PREP operários/N construindo/V a/ART penitenciária/N de/PREP Sobral/NPROP ./.





Avaliação de etiquetadores pelo Aelius

Etiquetagem nos moldes do Corpus Histórico do Português Tycho Brahe



 

>>> from Aelius import Avalia
>>> ouro="luzia_inicio.chptb.gold.txt"
>>> print open(ouro).read()
O/D morro/N do/P+D Curral/NPR do/P+D Açougue/NPR emergia/VB-D em/P suave/ADJ-G declive/N da/P+D-F campina/N ondulada/VB-AN-F ./.
Escorchado/VB-AN ,/, indigente/ADJ-G de/P arvoredo/N ,/, o/D cômoro/N enegrecido/VB-AN pelo/P+D sangue/N de/P reses/N-P sem/P conto/N ,/, deixara/VB-RA de/P ser/SR o/D sítio/N sinistro/ADJ do/P+D matadouro/N e/CONJ a/D-F pousada/N predileta/ADJ-F de/P bandos/N-P de/P urubutingas/N-P e/CONJ camirangas/N-P vorazes/ADJ-G-P ./.


Bateram/VB-D -/+ se/SE os/D-P vastos/ADJ-P currais/N-P ,/, de/P grossos/ADJ-P esteios/N-P de/P aroeira/N ,/, fincados/VB-AN-P a/P pique/N ,/, rijos/ADJ-P como/CONJS barras/N-P de/P ferro/N ,/, currais/N-P seculares/ADJ-G-P ,/, obra/N ciclópica/ADJ-F ,/, da/P+D-F qual/WPRO restava/VB-D apenas/ADV ,/, como/CONJS lúgubre/ADJ-G vestígio/N ,/, o/D moirão/N ligeiramente/ADV inclinado/VB-AN ,/, adelgaçado/VB-AN no/P+D centro/N ,/, polido/VB-AN pelo/P+D contínuo/ADJ atrito/N das/P+D-F-P cordas/N-P de/P laçar/VB as/D-F-P vítimas/N-P ,/, que/WPRO a/P ele/PRO eram/SR-D arrastadas/VB-AN-F-P aos/P+D-P empuxões/N-P ,/, bufando/VB-G ,/, resistindo/VB-G ,/, ou/CONJ entregando/VB-G ,/, resignadas/VB-AN-F-P e/CONJ mansas/ADJ-F-P ,/, o/D pescoço/N à/P+D-F faca/N do/P+D magarefe/N ./.
Ali/ADV ,/, no/P+D sítio/N de/P morte/N ,/, fervilhavam/VB-D ,/, então/ADV ,/, em/P ruidosa/ADJ-F diligência/N ,/, legiões/N-P de/P operários/N-P construindo/VB-G a/D-F penitenciária/N de/P Sobral/NPR ./.

>>> Avalia.TestaEtiquetador(h,"hunpos",ouro=ouro)
Total de erros: 4
Total de palavras:158
Acurácia:97.468354
>>> Avalia.VERBOSE=True
>>> Avalia.TestaEtiquetador(h,"hunpos",ouro=ouro)
Total de erros: 4
Total de palavras:158
Acurácia:97.468354
>>> Avalia.exibe_erros()
Anotação automática    Anotação humana

Açougue/N    Açougue/NPR
cômoro/NPR    cômoro/N
sinistro/N    sinistro/ADJ
mansas/VB-AN-F-P    mansas/ADJ-F-P
>>>


Etiquetagem nos moldes do corpus MAC-Morpho

>>> gold="luzia_inicio.macmorpho.gold.txt"
>>> Avalia.TestaEtiquetador(m,"hunpos",ouro=gold)
Total de erros: 9
Total de palavras:170
Acurácia:94.705882
>>> Avalia.exibe_erros()
Anotação automática    Anotação humana

Curral/N    Curral/NPROP
Açougue/N    Açougue/NPROP
indigente/N    indigente/ADJ
Bateram/V    Bateram/V|+
se/KS    se/PROPESS
a/ART    a/PREP
rijos/PCP    rijos/ADJ
a/PRO-KS-REL    a/PROSUB
mansas/PCP    mansas/ADJ
>>>