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 | _ | _ |