Skip to content

Instantly share code, notes, and snippets.

@arademaker
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arademaker/da101867c98a5a677396 to your computer and use it in GitHub Desktop.
Save arademaker/da101867c98a5a677396 to your computer and use it in GitHub Desktop.

Portuguese POS tagged corpora

Dados CoNLL-X

Este primeiro arquivo foi obtido do CoNLL-X Shared Task. É o arquivo de teste disponibilizado. A quarta coluna, V4, contém a tag.

data <- read.csv("conll06-test/portuguese_bosque_test.conll", sep = "\t", header=FALSE)
table(data$V4)

#+RESULTS[8e48120943ea1d6d89d47d641374e78ca857c6df]:

adj230
adv248
art780
conj182
n1143
num134
pp9
pron321
prop332
prp898
punc858
v732

Agora com uma idéia do tamanho do corpus por tag, vamos a quantidade de ocorrências únicas por tag que esperamos poder encontrar na openWordnet-PT. A terceira coluna, V3, é a coluna com o lemma do token.

sapply(c("adj","adv","n","v"), function(pos) c(pos,length(unique(subset(data, V4 == pos)$V3))))

#+RESULTS[2064d6fd4b1ffa9adeaf67b1a18a502403e01b82]:

adjadvnv
16593754320

Este arquivo tem o seguinte formato:

head(data, 20)

#+RESULTS[bcadfec0ba7a20b9cfa4cbfdd5c6be4074c1bf49]:

1Ééadvadv<foc>9FOC__
2porporprpprp_9ADVL__
3issoissopronpron-indp<dem>MS2P<__
4quequeadvadv<foc>9FOC__
5,,puncpunc_6PUNC__
6explicaexplicarvv-finPR3SIND0STA__
7,,puncpunc_6PUNC__
8nãonãoadvadv_9ADVL__
9temtervv-finPR3SIND6ACC__
10penapenannFS9ACC__
11dedeprpprp_10N<__
12Hillary_ClintonHillary_ClintonproppropFS11P<__
13..puncpunc_6PUNC__
1««puncpunc_8PUNC__
2Eleselepronpron-persM3PNOM8SUBJ__
3[[puncpunc_8PUNC__
4HillaryHillaryproppropFS9APP__
5eeconjconj-c<co-app>4CO__
6Bill_ClintonBill_ClintonproppropMS4CJT__
7]]puncpunc_8PUNC__

Agora repetindo a conta para o arquivo de treino.

data <- read.csv("conll06-train/portuguese_bosque_train.conll", sep = "\t", header=FALSE)
table(data$V4)

#+RESULTS[21deb3206e724fc6397493184faa9ca71fad304f]:

?2
adj10492
adv8844
art28537
conj7211
ec5
in40
n38928
num4028
pp388
pron10671
prop11374
prp31499
punc29085
v25573
vp1

E as ocorrências distintas:

sapply(c("adj","adv","n","v"), function(pos) c(pos,length(unique(subset(data, V4 == pos)$V3))))

#+RESULTS[2064d6fd4b1ffa9adeaf67b1a18a502403e01b82]:

adjadvnv
232564667101963

Dados Google Universal TreeBank

Existem 3 arquivos distribuídos na versão 2.0.

files <- dir("universal_treebanks_v2.0/std/pt-br")
files

#+RESULTS[67fbd1f8dc6cdca5d75936556fcaa6492c220570]:

pt-br-universal-dev.conll
pt-br-universal-test.conll
pt-br-universal-train.conll

Para termos alguns números iniciais, vou fazer as mesmas contas apenas com este. Infelizmente, os arquivos não tem lemmas, para produzir os lemmas tenho duas alternativas. Usar o lematizador do Hugo, https://github.com/rikarudo/LemPORT, ou reconstruir o corpus e usar freeLing. O lematizador do Hugo recebe a palavra e uma POS tag e retorna o lemma. Para o FreeLing, não acho que faça sentido passar as palavras separadas e nem vejo como fazer isso, melhor reconstruir o raw text e rodar Freeling.

data <- read.csv("universal_treebanks_v2.0/std/pt-br/pt-br-universal-train.conll", sep = "\t", header=FALSE)
table(data$V4)

#+RESULTS[8265cdb36a851d506c9d1d212f62dacc121c4f6f]:

1
.16861
ADJ6120
ADP21082
ADV3971
CONJ4427
DET10591
NOUN36334
NUM3482
PRON3001
PRT292
VERB14009
X70

Só para terem uma idéia, as primeiras linhas deste arquivo contém:

head(data, 20)

#+RESULTS[bcadfec0ba7a20b9cfa4cbfdd5c6be4074c1bf49]:

1O_DETDET_2det__
2objetivo_NOUNNOUN_8attr__
3dos_ADPADP_2adpmod__
4principais_ADJADJ_5amod__
5hotéis_NOUNNOUN_3adpobj__
6da_ADPADP_5adpmod__
7cidade_NOUNNOUN_6adpobj__
8é_VERBVERB_0ROOT__
9que_CONJCONJ_15mark__
10o_DETDET_11det__
11hóspede_NOUNNOUN_15nsubj__
12jamais_ADVADV_15advmod__
13tenha_VERBAUX_15aux__
14que_CONJCONJ_15adp__
15sair_VERBVERB_8csubj__
16dali_ADVADV_15advmod__
17e_CONJCONJ_15cc__
18gaste_VERBVERB_15conj__
19a_ADPADP_18adpmod__
20cada_DETDET_21det__
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment