Open heliolbs opened 2 weeks ago
As três funções abaixo foram usadas para analisar todas as sentenças do treebank, com qualquer quantidade de ocorrências de parataxe.
import Yauti
sents = Yauti.extractConlluSents(Yauti.TREEBANK_PATH)
def analyse_parataxes(sents):
mapeamento = {}
for sent in sents:
parataxis = sent.filter(deprel='parataxis')
tokenList = parataxis
if len(parataxis) > 1:
for p in parataxis:
if sent.filter(id=p['head']):
t = sent.filter(id=p['head'])[0]
if t not in parataxis:
tokenList.append(t)
token_pairs = get_token_pairs(tokenList)
sequence = connect_token_pairs(token_pairs)
if len(tokenList) == len(sequence[0]):
pattern = 'Série'
else:
pattern = 'Paralelo'
mapeamento.update({sent.metadata['sent_id'] : {'sequence' : sequence[0], 'padrão' : pattern}})
return mapeamento
def get_token_pairs(sent):
token_pairs = []
for tokenA in sent:
for tokenB in sent:
if tokenA['id'] == tokenB['head'] and tokenB['deprel'] == 'parataxis':
token_pairs.append([tokenA['id'], tokenB['id']])
return token_pairs
def connect_token_pairs(pairs):
if len(pairs) == 0:
return [[]]
elif len(pairs) == 1:
sequence = pairs
else:
sequence = []
for pairA in pairs:
for pairB in pairs:
if pairA[1:] == pairB[:-1]:
sequence.append(sorted(list(set(pairA+pairB))))
return(connect_token_pairs(sequence))
return sequence
O código abaixo se refere à execução das funções acima e à quantificação dos resultados.
mapa = analyse_parataxes(sents)
contagem = {}
for k, v in mapa.items():
if v['padrão'] in contagem.keys():
contagem[v['padrão']] += 1
else:
contagem.update({ v['padrão'] : 1})
contagem
# {'Série': 81, 'Paralelo': 62}
contagem = {}
for k, v in mapa.items():
if 'Casasnovas2006' in k:
if v['padrão'] in contagem.keys():
contagem[v['padrão']] += 1
else:
contagem.update({ v['padrão'] : 1})
contagem
# {'Paralelo': 24, 'Série': 13}
Trago para cá a sinopse que adiantei em #599 .
Minha consulta me diz que há 143 sentenças no treebank com pelo menos duas ocorrências de
parataxis
. Dentre elas, 62 sentenças seguem seu padrão em 'série' (encadeamento de parataxes), mas 81 têm pelo menos uma parataxe não encadeada, isto é, ou seguem o padrão em 'paralelo' ou se estruturam de forma híbrida, mesclando os dois padrões . Algumas poucas têm parataxes completamente desconectadas umas das outras (padrão em paralelo). Dessas 143 sentenças, 37 são do Casasnovas (2006): sendo 24 em paralelo e 13 em série. Vou abrir nova issue para expor meu código e documentar a investigação da aplicação dessa diretriz.Obs.: A versão consultada foi do antepenúltimo commit. Acredito que seus dois últimos commits não afetaram esses resultados.
Padrão | Paralelo (ou Híbrido) | Série | Total |
---|---|---|---|
Sentenças do corpus | 81 (57%) | 62 (43%) | 143 |
Sentenças de Casasnovas2006 |
24 (65%) | 13 (35%) | 37 |
Originally posted by @heliolbs in comment
As células da coluna 'Encadeamento' representam os ids
encadeados por parataxes naquela sentença. As células vazias nessa coluna indicam sentenças cujas parataxes são completamente desconectadas umas das outras. O código abaixo gerou automaticamente as linhas de conteúdo da tabela abaixo já com a formatação em markdown:
for k, v in mapa.items():
print(f"`{k}`|{str(v['sequence'])[1:-1]}|{v['padrão']}")
Sentença | Encadeamento | Padrão |
---|---|---|
Avila2021:0:0:38 |
13, 20, 26 | Série |
Avila2021:0:0:46 |
4, 10, 16 | Série |
Avila2021:0:0:64 |
3, 8, 11 | Série |
Avila2021:0:0:69 |
2, 6, 10 | Série |
Avila2021:0:0:87 |
2, 8, 16, 21 | Série |
Avila2021:0:0:93 |
2, 4, 6 | Série |
Avila2021:0:0:98 |
9, 12, 19 | Série |
Avila2021:0:0:106 |
Paralelo | |
Avila2021:0:0:109 |
5, 9, 18, 21 | Série |
Avila2021:0:0:124 |
6, 11, 16, 28 | Série |
Avila2021:0:0:127 |
Paralelo | |
Avila2021:0:0:129 |
2, 9, 14 | Série |
Avila2021:13:1:130 |
6, 12, 15 | Série |
Avila2021:0:0:134 |
1, 5, 9 | Série |
Avila2021:0:0:139 |
1, 4, 7 | Série |
Avila2021:0:0:143 |
3, 9, 14 | Série |
Avila2021:0:0:177 |
2, 7, 16, 21 | Série |
Avila2021:0:0:179 |
2, 7, 12 | Série |
Avila2021:19:1:181 |
6, 9, 15, 18 | Paralelo |
Avila2021:0:0:183 |
4, 8, 13 | Série |
Avila2021:0:0:189 |
2, 4, 6, 10, 25 | Série |
Avila2021:0:0:213 |
13, 19, 21 | Paralelo |
Avila2021:0:0:224 |
4, 10, 12 | Série |
Avila2021:24:2:246 |
2, 4, 5 | Série |
Avila2021:0:0:261 |
2, 13, 18 | Série |
Avila2021:0:0:306 |
Paralelo | |
Avila2021:0:0:310 |
3, 11, 13, 17, 21, 27, 29, 32, 34, 35 | Série |
Avila2021:0:0:312 |
5, 10, 13 | Paralelo |
Avila2021:0:0:330 |
1, 6, 8 | Série |
Avila2021:29:5:334 |
2, 6, 9 | Série |
Avila2021:0:0:366 |
12, 15, 19, 20 | Paralelo |
Avila2021:0:0:367 |
4, 8, 12 | Série |
Avila2021:0:0:376 |
11, 25, 34 | Série |
Avila2021:0:0:380 |
Paralelo | |
Avila2021:0:0:382 |
9, 15, 19 | Paralelo |
Avila2021:0:0:387 |
1, 7, 12, 18 | Série |
Avila2021:0:0:405 |
1, 9, 16 | Série |
Avila2021:0:0:425 |
3, 6, 11, 18 | Série |
Avila2021:0:0:428 |
1, 9, 13 | Série |
Avila2021:0:0:436 |
2, 4, 11, 16, 20 | Série |
Avila2021:0:0:439 |
9, 13, 17 | Série |
Avila2021:0:0:461 |
4, 9, 11 | Série |
Avila2021:0:0:464 |
5, 11, 14 | Paralelo |
Avila2021:0:0:503 |
2, 4, 9 | Série |
Avila2021:0:0:525 |
4, 6, 12 | Série |
Avila2021:0:0:565 |
1, 5, 11 | Série |
Avila2021:0:0:580 |
2, 7, 9 | Série |
Avila2021:0:0:603 |
6, 11, 16, 22, 24 | Série |
Avila2021:0:0:613 |
Paralelo | |
Avila2021:0:0:619 |
2, 5, 11 | Série |
Avila2021:0:0:636 |
2, 5, 11 | Série |
Avila2021:0:0:673 |
3, 8, 10, 18 | Série |
Avila2021:0:0:678 |
Paralelo | |
NTLN2019:0:0:3 |
Paralelo | |
NTLN2019:0:0:6 |
14, 17, 22 | Paralelo |
NTLN2019:0:0:7 |
3, 5, 17 | Série |
NTLN2019:1:1:8 |
1, 3, 5 | Série |
NTLN2019:4:1:31 |
2, 12, 13, 16, 20 | Série |
NTLN2019:0:0:34 |
7, 24, 29 | Série |
NTLN2019:5:2:38 |
Paralelo | |
NTLN2019:5:3:39 |
Paralelo | |
NTLN2019:0:0:49 |
12, 15, 18 | Paralelo |
NTLN2019:0:0:50 |
5, 13, 18, 23 | Paralelo |
Cruz2011:0:0:95 |
Paralelo | |
TerraPreta2013:1:6:6 |
10, 14, 25 | Série |
Casasnovas2006:1:5:5 |
Paralelo | |
Casasnovas2006:1:6:6 |
12, 17, 23 | Paralelo |
Casasnovas2006:1:13:13 |
13, 17, 22 | Paralelo |
Casasnovas2006:2:2:16 |
1, 3, 5, 6 | Série |
Casasnovas2006:2:5:19 |
3, 4, 5 | Série |
Casasnovas2006:2:10:24 |
3, 5, 10 | Paralelo |
Casasnovas2006:3:9:33 |
11, 13, 15, 17, 21, 22 | Série |
Casasnovas2006:3:10:34 |
4, 6, 11 | Paralelo |
Casasnovas2006:4:10:45 |
6, 8, 17 | Série |
Casasnovas2006:4:13:48 |
6, 12, 20 | Série |
Casasnovas2006:5:6:54 |
12, 13, 14 | Paralelo |
Casasnovas2006:5:7:55 |
Paralelo | |
Casasnovas2006:5:8:56 |
Paralelo | |
Casasnovas2006:5:10:58 |
Paralelo | |
Casasnovas2006:6:5:64 |
Paralelo | |
Casasnovas2006:8:7:75 |
4, 9, 10 | Série |
Casasnovas2006:8:8:76 |
Paralelo | |
Casasnovas2006:8:10:78 |
6, 7, 10 | Série |
Casasnovas2006:8:14:82 |
Paralelo | |
Casasnovas2006:9:2:86 |
1, 5, 11 | Série |
Casasnovas2006:9:13:97 |
1, 2, 9, 10 | Série |
Casasnovas2006:9:17:101 |
Paralelo | |
Casasnovas2006:9:22:106 |
Paralelo | |
Casasnovas2006:9:25:109 |
Paralelo | |
Casasnovas2006:9:32:116 |
Paralelo | |
Casasnovas2006:10:7:126 |
Paralelo | |
Casasnovas2006:11:14:145 |
8, 17, 18 | Série |
Casasnovas2006:11:15:146 |
Paralelo | |
Casasnovas2006:11:27:158 |
Paralelo | |
Casasnovas2006:12:1:167 |
Paralelo | |
Casasnovas2006:12:7:173 |
9, 14, 23 | Série |
Casasnovas2006:12:8:174 |
Paralelo | |
Casasnovas2006:12:17:183 |
Paralelo | |
Casasnovas2006:12:21:187 |
Paralelo | |
Casasnovas2006:12:26:192 |
Paralelo | |
Casasnovas2006:12:27:193 |
2, 6, 15 | Série |
Casasnovas2006:12:28:194 |
6, 10, 17 | Série |
Rodrigues1890:1-1-4:3:103 |
Paralelo | |
Rodrigues1890:1-1-4:4:104 |
3, 7, 8 | Série |
Rodrigues1890:1-1-6:0:0 |
2, 9, 12 | Série |
Rodrigues1890:1-1-11:84:84 |
Paralelo | |
Rodrigues1890:1-2-2:101:101 |
17, 24, 27, 32 | Paralelo |
Rodrigues1890:1-2-2:120:120 |
2, 10, 12 | Paralelo |
Rodrigues1890:1-2-3:130:130 |
Paralelo | |
Rodrigues1890:1-2-3:734:734 |
7, 10, 24 | Série |
Rodrigues1890:2-5:4:104 |
3, 5, 9 | Série |
Rodrigues1890:2-10:40:40 |
8, 16, 23 | Série |
Rodrigues1890:2-14:6:506 |
Paralelo | |
Magalhaes1876:1:6:6 |
4, 8, 14, 19 | Série |
Magalhaes1876:1:14:14 |
9, 16, 19 | Paralelo |
Magalhaes1876:1:16:16 |
2, 5, 11 | Série |
Magalhaes1876:1:37:37 |
2, 5, 11, 16 | Série |
Magalhaes1876:1:39:39 |
1, 4, 7 | Série |
Magalhaes1876:1:43:43 |
6, 9, 16 | Paralelo |
Magalhaes1876:2:3:46 |
Paralelo | |
Magalhaes1876:2:8:51 |
14, 16, 24 | Paralelo |
Magalhaes1876:3:3:203 |
2, 4, 7 | Série |
Magalhaes1876:12:100:3000 |
Paralelo | |
Amorim1928:19:75:75 |
5, 10, 15 | Série |
Amorim1928:21:5:1000 |
Paralelo | |
Amorim1928:21:43:43 |
2, 7, 14 | Série |
Amorim1928:6:382:382 |
2, 10, 12 | Série |
Amorim1928:8-1:3:3003 |
4, 9, 19, 29, 36 | Série |
Amorim1928:8:64:64 |
9, 16, 23 | Série |
Amorim1928:8-1:30:3033 |
7, 12, 16 | Série |
Amorim1928:2:221:5620 |
5, 12, 17 | Série |
Amorim1928:2:102:102 |
Paralelo | |
Amorim1928:6-1:350:350 |
Paralelo | |
Amorim1928:3:200:200 |
Paralelo | |
Amorim1928:3:201:201 |
Paralelo | |
Amorim1928:10:150:150 |
2, 6, 11 | Série |
Amorim1928:12:40:40 |
Paralelo | |
Amorim1928:33:132:132 |
3, 11, 12, 19 | Série |
Costa1909:1:12:12 |
2, 10, 12 | Série |
Aguiar1898:9:1:1001 |
5, 14, 22 | Paralelo |
Aguiar1898:21-6:6:546 |
2, 14, 20 | Série |
Aguiar1898:21-6:7:547 |
2, 7, 12, 15, 19, 23, 32 | Série |
Leetra2015:8:100:100 |
1, 12, 25, 26 | Paralelo |
A partir deste comentário de @leoalenc em #599 a respeito da preferência de adoção da orientação UD 'nested-coordination' em relação à orientação UD side-by-side-run-on-sentences, decidi investigar o quanto essa diretriz está sendo seguida ao longo do corpus.
Neste comentário da mesma issue, relatei a consulta à versão 2.14 do treebank pelo Grew-Match, cujo resultado indicou 95 ocorrências de três nós encadeados por duas parataxes e apenas 14 ocorrências de pares de parataxes que compartilhavam o mesmo
head
.