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]:
adj | 230 |
adv | 248 |
art | 780 |
conj | 182 |
n | 1143 |
num | 134 |
pp | 9 |
pron | 321 |
prop | 332 |
prp | 898 |
punc | 858 |
v | 732 |
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]:
adj | adv | n | v |
165 | 93 | 754 | 320 |
Este arquivo tem o seguinte formato:
head(data, 20)
#+RESULTS[bcadfec0ba7a20b9cfa4cbfdd5c6be4074c1bf49]:
1 | É | é | adv | adv | <foc> | 9 | FOC | _ | _ | ||
2 | por | por | prp | prp | _ | 9 | ADVL | _ | _ | ||
3 | isso | isso | pron | pron-indp | <dem> | M | S | 2 | P< | _ | _ |
4 | que | que | adv | adv | <foc> | 9 | FOC | _ | _ | ||
5 | , | , | punc | punc | _ | 6 | PUNC | _ | _ | ||
6 | explica | explicar | v | v-fin | PR | 3S | IND | 0 | STA | _ | _ |
7 | , | , | punc | punc | _ | 6 | PUNC | _ | _ | ||
8 | não | não | adv | adv | _ | 9 | ADVL | _ | _ | ||
9 | tem | ter | v | v-fin | PR | 3S | IND | 6 | ACC | _ | _ |
10 | pena | pena | n | n | F | S | 9 | ACC | _ | _ | |
11 | de | de | prp | prp | _ | 10 | N< | _ | _ | ||
12 | Hillary_Clinton | Hillary_Clinton | prop | prop | F | S | 11 | P< | _ | _ | |
13 | . | . | punc | punc | _ | 6 | PUNC | _ | _ | ||
1 | « | « | punc | punc | _ | 8 | PUNC | _ | _ | ||
2 | Eles | ele | pron | pron-pers | M | 3P | NOM | 8 | SUBJ | _ | _ |
3 | [ | [ | punc | punc | _ | 8 | PUNC | _ | _ | ||
4 | Hillary | Hillary | prop | prop | F | S | 9 | APP | _ | _ | |
5 | e | e | conj | conj-c | <co-app> | 4 | CO | _ | _ | ||
6 | Bill_Clinton | Bill_Clinton | prop | prop | M | S | 4 | CJT | _ | _ | |
7 | ] | ] | punc | punc | _ | 8 | PUNC | _ | _ |
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 |
adj | 10492 |
adv | 8844 |
art | 28537 |
conj | 7211 |
ec | 5 |
in | 40 |
n | 38928 |
num | 4028 |
pp | 388 |
pron | 10671 |
prop | 11374 |
prp | 31499 |
punc | 29085 |
v | 25573 |
vp | 1 |
E as ocorrências distintas:
sapply(c("adj","adv","n","v"), function(pos) c(pos,length(unique(subset(data, V4 == pos)$V3))))
#+RESULTS[2064d6fd4b1ffa9adeaf67b1a18a502403e01b82]:
adj | adv | n | v |
2325 | 646 | 6710 | 1963 |
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 |
ADJ | 6120 |
ADP | 21082 |
ADV | 3971 |
CONJ | 4427 |
DET | 10591 |
NOUN | 36334 |
NUM | 3482 |
PRON | 3001 |
PRT | 292 |
VERB | 14009 |
X | 70 |
Só para terem uma idéia, as primeiras linhas deste arquivo contém:
head(data, 20)
#+RESULTS[bcadfec0ba7a20b9cfa4cbfdd5c6be4074c1bf49]:
1 | O | _ | DET | DET | _ | 2 | det | _ | _ |
2 | objetivo | _ | NOUN | NOUN | _ | 8 | attr | _ | _ |
3 | dos | _ | ADP | ADP | _ | 2 | adpmod | _ | _ |
4 | principais | _ | ADJ | ADJ | _ | 5 | amod | _ | _ |
5 | hotéis | _ | NOUN | NOUN | _ | 3 | adpobj | _ | _ |
6 | da | _ | ADP | ADP | _ | 5 | adpmod | _ | _ |
7 | cidade | _ | NOUN | NOUN | _ | 6 | adpobj | _ | _ |
8 | é | _ | VERB | VERB | _ | 0 | ROOT | _ | _ |
9 | que | _ | CONJ | CONJ | _ | 15 | mark | _ | _ |
10 | o | _ | DET | DET | _ | 11 | det | _ | _ |
11 | hóspede | _ | NOUN | NOUN | _ | 15 | nsubj | _ | _ |
12 | jamais | _ | ADV | ADV | _ | 15 | advmod | _ | _ |
13 | tenha | _ | VERB | AUX | _ | 15 | aux | _ | _ |
14 | que | _ | CONJ | CONJ | _ | 15 | adp | _ | _ |
15 | sair | _ | VERB | VERB | _ | 8 | csubj | _ | _ |
16 | dali | _ | ADV | ADV | _ | 15 | advmod | _ | _ |
17 | e | _ | CONJ | CONJ | _ | 15 | cc | _ | _ |
18 | gaste | _ | VERB | VERB | _ | 15 | conj | _ | _ |
19 | a | _ | ADP | ADP | _ | 18 | adpmod | _ | _ |
20 | cada | _ | DET | DET | _ | 21 | det | _ | _ |