lfcc commited on
Commit
2a0848a
1 Parent(s): 0ecf369
Files changed (27) hide show
  1. .streamlit/config.toml +2 -0
  2. README.md +4 -4
  3. app.py +410 -0
  4. logs.txt +37 -0
  5. models/argument/bert-base-portuguese-squad-ace-pt-pt/config.json +32 -0
  6. models/argument/bert-base-portuguese-squad-ace-pt-pt/pytorch_model.bin +3 -0
  7. models/argument/bert-base-portuguese-squad-ace-pt-pt/special_tokens_map.json +7 -0
  8. models/argument/bert-base-portuguese-squad-ace-pt-pt/tokenizer.json +0 -0
  9. models/argument/bert-base-portuguese-squad-ace-pt-pt/tokenizer_config.json +15 -0
  10. models/argument/bert-base-portuguese-squad-ace-pt-pt/training_args.bin +3 -0
  11. models/argument/bert-base-portuguese-squad-ace-pt-pt/vocab.txt +0 -0
  12. models/argument/bert-base-portuguese-squad2-ace-impossible1.4/config.json +32 -0
  13. models/argument/bert-base-portuguese-squad2-ace-impossible1.4/pytorch_model.bin +3 -0
  14. models/argument/bert-base-portuguese-squad2-ace-impossible1.4/special_tokens_map.json +7 -0
  15. models/argument/bert-base-portuguese-squad2-ace-impossible1.4/tokenizer.json +0 -0
  16. models/argument/bert-base-portuguese-squad2-ace-impossible1.4/tokenizer_config.json +15 -0
  17. models/argument/bert-base-portuguese-squad2-ace-impossible1.4/training_args.bin +3 -0
  18. models/argument/bert-base-portuguese-squad2-ace-impossible1.4/vocab.txt +0 -0
  19. models/trigger/ACE_base_google_pt/config.json +156 -0
  20. models/trigger/ACE_base_google_pt/pytorch_model.bin +3 -0
  21. models/trigger/ACE_base_google_pt/special_tokens_map.json +7 -0
  22. models/trigger/ACE_base_google_pt/tokenizer.json +0 -0
  23. models/trigger/ACE_base_google_pt/tokenizer_config.json +15 -0
  24. models/trigger/ACE_base_google_pt/training_args.bin +3 -0
  25. models/trigger/ACE_base_google_pt/vocab.txt +0 -0
  26. questions.json +227 -0
  27. requirements.txt +6 -0
.streamlit/config.toml ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ [theme]
2
+ base="light"
README.md CHANGED
@@ -1,10 +1,10 @@
1
  ---
2
  title: Event Extractor
3
- emoji: 🏃
4
- colorFrom: gray
5
- colorTo: purple
6
  sdk: streamlit
7
- sdk_version: 1.19.0
8
  app_file: app.py
9
  pinned: false
10
  ---
 
1
  ---
2
  title: Event Extractor
3
+ emoji: 🦀
4
+ colorFrom: indigo
5
+ colorTo: green
6
  sdk: streamlit
7
+ sdk_version: 1.17.0
8
  app_file: app.py
9
  pinned: false
10
  ---
app.py ADDED
@@ -0,0 +1,410 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from annotated_text import annotated_text
3
+ from transformers import AutoModelForQuestionAnswering, Trainer
4
+
5
+ import torch
6
+ from transformers import pipeline
7
+ from transformers import AutoModelForTokenClassification, AutoTokenizer
8
+ from transformers import AutoModelForQuestionAnswering
9
+
10
+ import json
11
+
12
+
13
+ st.set_page_config(layout="wide")
14
+
15
+ file = open("questions.json")
16
+ questions = json.load(file)
17
+
18
+ model = AutoModelForTokenClassification.from_pretrained("models/trigger/ACE_base_google_pt")
19
+ tokenizer = AutoTokenizer.from_pretrained("models/trigger/ACE_base_google_pt", model_max_length=512)
20
+ tagger = pipeline("ner", model=model, tokenizer=tokenizer, aggregation_strategy='first') #aggregation_strategy='max'
21
+
22
+ qa_model2_path = "models/argument/bert-base-portuguese-squad2-ace-impossible1.4"
23
+ qa_model_path = "models/argument/bert-base-portuguese-squad-ace-pt-pt"
24
+ model_qa = pipeline("question-answering", model=qa_model_path)
25
+ model_qa2 = AutoModelForQuestionAnswering.from_pretrained(qa_model2_path)
26
+ tokenizer_qa2 = AutoTokenizer.from_pretrained(qa_model2_path)
27
+
28
+
29
+ def aggregate_subwords(input_tokens, labels):
30
+ new_inputs = []
31
+ new_labels = []
32
+ current_word = ""
33
+ current_label = ""
34
+ for i, token in enumerate(input_tokens):
35
+ label = labels[i]
36
+ # Handle subwords
37
+ if token.startswith('##'):
38
+ current_word += token[2:]
39
+ else:
40
+ # Finish previous word
41
+ if current_word:
42
+ new_inputs.append(current_word)
43
+ new_labels.append(current_label)
44
+ # Start new word
45
+ current_word = token
46
+ current_label = label
47
+ new_inputs.append(current_word)
48
+ new_labels.append(current_label)
49
+ return new_inputs, new_labels
50
+
51
+ def annotateTriggers(line):
52
+ line = line.strip()
53
+ inputs = tokenizer(line, return_tensors="pt")
54
+ input_tokens = tokenizer.convert_ids_to_tokens(inputs['input_ids'][0])
55
+
56
+ with torch.no_grad():
57
+ logits = model(**inputs).logits
58
+
59
+ predictions = torch.argmax(logits, dim=2)
60
+ predicted_token_class = [model.config.id2label[t.item()] for t in predictions[0]]
61
+ input_tokens, predicted_token_class = aggregate_subwords(input_tokens,predicted_token_class)
62
+ token_labels = []
63
+ current_entity = ''
64
+ for i, label in enumerate(predicted_token_class):
65
+ token = input_tokens[i]
66
+ if label == 'O':
67
+ token_labels.append((token, 'O', ''))
68
+ current_entity = ''
69
+ elif label.startswith('B-'):
70
+ current_entity = label[2:]
71
+ token_labels.append((token, 'B', current_entity))
72
+ elif label.startswith('I-'):
73
+ if current_entity == '':
74
+ raise ValueError(f"Invalid label sequence: {predicted_token_class}")
75
+ token_labels[-1] = (token_labels[-1][0] + f" {token}", 'I', current_entity)
76
+ else:
77
+ raise ValueError(f"Invalid label: {label}")
78
+ return token_labels[1:-1]
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+ n_best_size = 20
87
+ max_answer_length = 30
88
+ max_length = 384 # The maximum length of a feature (question and context)
89
+ doc_stride = 128 # The authorized overlap between two part of the context when splitting it is needed.
90
+ squad_v2 = True
91
+ pad_on_right = tokenizer.padding_side == "right"
92
+
93
+
94
+
95
+ def prepare_validation_features(examples):
96
+ # Some of the questions have lots of whitespace on the left, which is not useful and will make the
97
+ # truncation of the context fail (the tokenized question will take a lots of space). So we remove that
98
+ # left whitespace
99
+ examples["question"] = [q.lstrip() for q in examples["question"]]
100
+
101
+ # Tokenize our examples with truncation and maybe padding, but keep the overflows using a stride. This results
102
+ # in one example possible giving several features when a context is long, each of those features having a
103
+ # context that overlaps a bit the context of the previous feature.
104
+ tokenized_examples = tokenizer(
105
+ examples["question" if pad_on_right else "context"],
106
+ examples["context" if pad_on_right else "question"],
107
+ truncation="only_second" if pad_on_right else "only_first",
108
+ max_length=max_length,
109
+ stride=doc_stride,
110
+ return_overflowing_tokens=True,
111
+ return_offsets_mapping=True,
112
+ padding="max_length",
113
+ )
114
+
115
+ # Since one example might give us several features if it has a long context, we need a map from a feature to
116
+ # its corresponding example. This key gives us just that.
117
+ sample_mapping = tokenized_examples.pop("overflow_to_sample_mapping")
118
+
119
+ # We keep the example_id that gave us this feature and we will store the offset mappings.
120
+ tokenized_examples["example_id"] = []
121
+
122
+ for i in range(len(tokenized_examples["input_ids"])):
123
+ # Grab the sequence corresponding to that example (to know what is the context and what is the question).
124
+ sequence_ids = tokenized_examples.sequence_ids(i)
125
+ context_index = 1 if pad_on_right else 0
126
+
127
+ # One example can give several spans, this is the index of the example containing this span of text.
128
+ sample_index = sample_mapping[i]
129
+ tokenized_examples["example_id"].append(examples["id"][sample_index])
130
+
131
+ # Set to None the offset_mapping that are not part of the context so it's easy to determine if a token
132
+ # position is part of the context or not.
133
+ tokenized_examples["offset_mapping"][i] = [
134
+ (o if sequence_ids[k] == context_index else None)
135
+ for k, o in enumerate(tokenized_examples["offset_mapping"][i])
136
+ ]
137
+
138
+ return tokenized_examples
139
+
140
+ from tqdm.auto import tqdm
141
+ import numpy as np
142
+ import collections
143
+
144
+
145
+ def softmax(x):
146
+ return(np.exp(x)/np.exp(x).sum())
147
+
148
+ def normalizeScores(answers,min_null_score):
149
+ scores = [a["score"] for a in answers] + [min_null_score]
150
+ scores = softmax(scores)
151
+ for i in range(len(answers)):
152
+ answers[i]["score"] = scores[i]
153
+ return answers, scores[-1]
154
+
155
+
156
+ def postprocess_qa_predictions(examples, features, raw_predictions, n_best_size = 20, max_answer_length = 30):
157
+ all_start_logits, all_end_logits = raw_predictions
158
+ # Build a map example to its corresponding features.
159
+ example_id_to_index = {k: i for i, k in enumerate(examples["id"])}
160
+ features_per_example = collections.defaultdict(list)
161
+ for i, feature in enumerate(features):
162
+ features_per_example[example_id_to_index[feature["example_id"]]].append(i)
163
+
164
+ # The dictionaries we have to fill.
165
+ predictions = collections.OrderedDict()
166
+
167
+ # Logging.
168
+ print(f"Post-processing {len(examples)} example predictions split into {len(features)} features.")
169
+
170
+ # Let's loop over all the examples!
171
+ for example_index, example in enumerate(tqdm(examples)):
172
+ # Those are the indices of the features associated to the current example.
173
+ feature_indices = features_per_example[example_index]
174
+
175
+ min_null_score = None # Only used if squad_v2 is True.
176
+ valid_answers = []
177
+
178
+ context = example["context"]
179
+ # Looping through all the features associated to the current example.
180
+ for feature_index in feature_indices:
181
+ # We grab the predictions of the model for this feature.
182
+ start_logits = all_start_logits[feature_index]
183
+ end_logits = all_end_logits[feature_index]
184
+ # This is what will allow us to map some the positions in our logits to span of texts in the original
185
+ # context.
186
+ offset_mapping = features[feature_index]["offset_mapping"]
187
+
188
+ # Update minimum null prediction.
189
+ cls_index = features[feature_index]["input_ids"].index(tokenizer.cls_token_id)
190
+ feature_null_score = start_logits[cls_index] + end_logits[cls_index]
191
+ if min_null_score is None or min_null_score < feature_null_score:
192
+ min_null_score = feature_null_score
193
+
194
+ # Go through all possibilities for the `n_best_size` greater start and end logits.
195
+ start_indexes = np.argsort(start_logits)[-1 : -n_best_size - 1 : -1].tolist()
196
+ end_indexes = np.argsort(end_logits)[-1 : -n_best_size - 1 : -1].tolist()
197
+ for start_index in start_indexes:
198
+ for end_index in end_indexes:
199
+ # Don't consider out-of-scope answers, either because the indices are out of bounds or correspond
200
+ # to part of the input_ids that are not in the context.
201
+ if (
202
+ start_index >= len(offset_mapping)
203
+ or end_index >= len(offset_mapping)
204
+ or offset_mapping[start_index] is None
205
+ or offset_mapping[end_index] is None
206
+ ):
207
+ continue
208
+ # Don't consider answers with a length that is either < 0 or > max_answer_length.
209
+ if end_index < start_index or end_index - start_index + 1 > max_answer_length:
210
+ continue
211
+
212
+ start_char = offset_mapping[start_index][0]
213
+ end_char = offset_mapping[end_index][1]
214
+ valid_answers.append(
215
+ {
216
+ "score": start_logits[start_index] + end_logits[end_index],
217
+ "text": context[start_char: end_char]
218
+ }
219
+ )
220
+
221
+ if len(valid_answers) > 0:
222
+ valid_answers, min_null_score = normalizeScores(valid_answers,min_null_score)
223
+ #print(valid_answers)
224
+
225
+ best_answer = sorted(valid_answers, key=lambda x: x["score"], reverse=True)[0]
226
+ else:
227
+ # In the very rare edge case we have not a single non-null prediction, we create a fake prediction to avoid
228
+ # failure.
229
+ best_answer = {"text": "", "score": 0.0}
230
+
231
+ # Let's pick our final answer: the best one or the null answer (only for squad_v2)
232
+ if not squad_v2:
233
+ predictions[example["id"]] = best_answer["text"]
234
+ else:
235
+ answer = best_answer if best_answer["score"] > min_null_score else {"text":"No answer","score":min_null_score}
236
+ predictions[example["id"]] = answer
237
+ return predictions
238
+
239
+ def qa(line,question):
240
+
241
+
242
+ d = {}
243
+ d["question"] = [question] #["Qual é o diametro do sol?"]
244
+ d["context"] = [line] #["O meu pai foi para Lisboa"]
245
+ d["id"] = ["my precious"]
246
+
247
+
248
+ from datasets import Dataset
249
+ dataset_validation = Dataset.from_dict(d)
250
+
251
+ validation_features = prepare_validation_features(d)
252
+ from datasets import Dataset
253
+ validation_features = Dataset.from_dict(validation_features)
254
+
255
+ trainer = Trainer(
256
+ model=model_qa2,
257
+ tokenizer=tokenizer_qa2,
258
+ )
259
+
260
+ raw_predictions = trainer.predict(validation_features)
261
+ validation_features.set_format(type=validation_features.format["type"], columns=list(validation_features.features.keys()))
262
+
263
+ final_predictions = postprocess_qa_predictions(dataset_validation, validation_features, raw_predictions.predictions)
264
+
265
+ formatted_predictions = [{"id": k, "prediction_text": v["text"], "no_answer_probability": 0, "score":v["score"]} for k, v in final_predictions.items()]
266
+ r = {"context":line,"question":question,"answer":formatted_predictions[0]["prediction_text"],"score": formatted_predictions[0]["score"]}
267
+ return r
268
+
269
+
270
+ def joinEntities(entities):
271
+
272
+ joined_entities = []
273
+ i = 0
274
+ while i < len(entities):
275
+ curr_entity = entities[i]
276
+ if curr_entity['entity'][0] == 'B':
277
+ label = curr_entity['entity'][2:]
278
+ j = i + 1
279
+ while j < len(entities) and entities[j]['entity'][0] == 'I':
280
+ j += 1
281
+ joined_entity = {
282
+ 'entity': label,
283
+ 'score': max(e['score'] for e in entities[i:j]),
284
+ 'index': min(e['index'] for e in entities[i:j]),
285
+ 'word': ' '.join(e['word'] for e in entities[i:j]),
286
+ 'start': entities[i]['start'],
287
+ 'end': entities[j-1]['end']
288
+ }
289
+ joined_entities.append(joined_entity)
290
+ i = j - 1
291
+ i += 1
292
+ return joined_entities
293
+
294
+
295
+
296
+ import pysbd
297
+ seg = pysbd.Segmenter(language="es", clean=False)
298
+
299
+ def sent_tokenize(text):
300
+ return seg.segment(text)
301
+
302
+ def getSentenceIndex(lines,span):
303
+ i = 1
304
+ sum = len(lines[0])
305
+ while sum < span:
306
+ sum += len(lines[i])
307
+ i = i + 1
308
+ return i - 1
309
+
310
+ def generateContext(text, window,span):
311
+ lines = sent_tokenize(text)
312
+ index = getSentenceIndex(lines,span)
313
+ text = " ".join(lines[max(0,index-window):index+window +1])
314
+ return text
315
+
316
+
317
+ def annotateEvents(text,squad,window):
318
+ text = text.strip()
319
+ ner_results = tagger(text)
320
+ #print(ner_results)
321
+ #ner_results = joinEntities(ner_results)
322
+ i = 0
323
+ #exit()
324
+ while i < len(ner_results):
325
+ ner_results[i]["entity"] = ner_results[i]["entity_group"].lstrip("B-")
326
+ ner_results[i]["entity"] = ner_results[i]["entity_group"].lstrip("I-")
327
+ i = i + 1
328
+
329
+ events = []
330
+ for trigger in ner_results:
331
+ tipo = trigger["entity_group"]
332
+ qs = questions[tipo]
333
+ context = generateContext(text,window,trigger["start"])
334
+ event = {
335
+ "trigger":trigger["word"],
336
+ "type": tipo,
337
+ "score": trigger["score"],
338
+ "context": context,
339
+ "arguments":[]
340
+ }
341
+ print("=========", tipo, "===========")
342
+ for role, question in qs.items():
343
+ question = question.rstrip("?") + " em " + trigger["word"]+"?"
344
+ if squad == 1:
345
+ result = model_qa(question=question, context=context)
346
+ else:
347
+ result = qa( context,question)
348
+ print(f"Question: {question}, answer: '{result['answer']}', score: {round(result['score'], 4)}")
349
+ argument = {
350
+ "role": role,
351
+ "text": result['answer'],
352
+ "score": result['score'],
353
+ }
354
+ event["arguments"].append(argument)
355
+ events.append(event)
356
+ return events
357
+
358
+
359
+ #"A Joana foi atacada pelo João nas ruas do Porto, com uma faca."
360
+
361
+ st.title('Extract Events')
362
+
363
+ options = ["A Joana foi atacada pelo João nas ruas do Porto, com uma faca.","O Estado-Maior ucraniano informou também que a Rússia lançou 19 ataques aéreos e 37 ataques com sistemas de foguete de lançamento múltiplo no último dia, danificando cidades e aldeias e ferindo um número indeterminado de civis.","Pelos menos oito civis morreram numa série de ataques russos várias regiões da Ucrânia.","O comandante das Forças Armadas da Ucrânia declarou que a Rússia disparou 36 mísseis de cruzeiro contra o país na manhã de quinta-feira (16/02), um dia depois que seis balões foram vistos sobre a capital ucraniana, Kiev.","Disparados por terra e mar, os mísseis mataram uma mulher e atingiram infraestrutura crítica, segundo autoridades, que afirmaram também ter observado uma mudança na estratégia de guerra russa, em uma aparente referência aos balões avistados em Kiev.", "O João morreu na guerra do Iraque.", 'A maria foi eleita presidente da republica em Portugal.']
364
+
365
+ option = st.selectbox(
366
+ 'Select examples',
367
+ options)
368
+ #option = options [index]
369
+ line = st.text_area("Insert Text",option)
370
+
371
+ st.button('Run')
372
+
373
+
374
+ st.sidebar.write("## Hyperparameters :gear:")
375
+ window = st.sidebar.slider('Context Window', 0, 10, 1)
376
+ if line != "":
377
+ st.header("Triggers:")
378
+ triggerss = annotateTriggers(line)
379
+ annotated_text(*[word[0]+" " if word[1] == 'O' else (word[0]+" ",word[2]) for word in triggerss ])
380
+
381
+ eventos_1 = annotateEvents(line,1,window)
382
+ eventos_2 = annotateEvents(line,2,window)
383
+ st.header("Arguments:")
384
+
385
+ c1, c2 = st.columns(2)
386
+ with c1:
387
+ st.subheader("bert-squad1-ace:")
388
+ with c2:
389
+ st.subheader("bert-squad2-ace:")
390
+
391
+ for mention1, mention2 in zip(eventos_1,eventos_2):
392
+ st.text("Trigger: " + mention1["trigger"] +" "+ mention1["type"] +" " +str(round(mention1["score"],3)))
393
+ st.text("Context: "+ mention1["context"])
394
+ col1, col2 = st.columns(2)
395
+ with col1:
396
+ for d in mention1["arguments"]:
397
+ text = d['text']
398
+ role = d['role']
399
+ #score = d['score']
400
+ annotated_text((text, role), " ", str(round(d['score'],3)))
401
+ st.write('\n')
402
+ with col2:
403
+ for d in mention2["arguments"]:
404
+ text = d['text']
405
+ role = d['role']
406
+ #score = d['score']
407
+ annotated_text((text, role), " ", str(round(d['score'],3)))
408
+ st.write('\n')
409
+ st.markdown("""---""")
410
+
logs.txt ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2023-03-19 11:42:45 A Joana foi atacada pelo João nas ruas do Porto, com uma faca.
2
+ 2023-03-19 11:42:52 Pelos menos oito civis morreram numa série de ataques russos várias regiões da Ucrânia.
3
+ 2023-03-19 12:55:33 A Joana foi atacada pelo João nas ruas do Porto, com uma faca.
4
+ 2023-03-19 12:55:46 O Primeiro-Ministro da altura, José Manuel Durão Barroso, prometeu restaurar a vida e a hora da instituição e permitiu que a nova diretora Catalina Pestana (1947-2018), nomeada em 2002 pelo Ministério da Segurança Social e do Trabalho, na altura tutelado por Bagão Félix, provedora da casa pia, reformasse a instituição.
5
+ 2023-03-19 12:56:17 Aqui vai o texto para testares: O caso BPN refere-se a um conjunto de casos interrelacionados que exibem indícios de vários tipos de crime, como corrupção, lavagem de dinheiro e tráfico de influências, e que levaram à nacionalização do BPN, banco a que estavam ligados ex-membros do núcleo duro do X governo Constitucional de Portugal (chefiado pcor Cavaco Silva), como Dias Loureiro, José Oliveira e Costa, Duarte Lima e Miguel Cadilhe. Entre as organizações envolvidas encontram-se, além do BPN, a sociedade lusa de negócios e o banco Insular. O final do caso BPN chega após um custo para o Estado Português de 3200 milhões de euros e consequente venda pelo governo PSD-PP de Passos Coelho ao banco BIC por 40 milhões de euros.[1] Em maio de 2010, foi votada e aprovada em Assembleia Geral da SLN a mudança de nome da Sociedade para Grupo Galilei, com 89,17% de votos favoráveis, numa Assembleia geral que teve 65,13% do capital representado. [5]Atualmente, no site do Grupo Galilei na Internet, a página "História" indica que o grupo foi fundado em 1999, mas não faz referência directa ao nome original, embora o mesmo se torne implícito. [6] Em janeiro de 2011, é tornado público que o ex-Primeiro-ministro e ex-Presidente da República de Portugal, Cavaco Silva, adquiriu as suas acções da então SLN a um preço especial (cerca de 40% a 60% abaixo do valor de mercado), o que estava reservado apenas para um conjunto selecionado de acionistas, e do qual Cavaco Silva não fazia parte. [7] No final de 2012, o total parcial de prejuízos causados, a serem pagos pelo Estado Português, ascendiam a 7 mil milhões de euros.[8] Em maio de 2017, foram condenados 12 dos arguidos processo principal do caso BPN. José Oliveira e Costa foi condenado a 14 anos de prisão por de abuso de confiança, burla qualificada, falsificação de documentos, infidelidade, aquisição ilícita de ações e de fraude fiscal no âmbito do processo do caso BPN.
6
+ 12:35
7
+ Aparentemente os resultados do squad 2 pareceram-me piores.
8
+ 12:36
9
+ É também curioso (deves ter uma explicação para isso) para o facto de o texto ter conseguido determina o argumento "hospital cruz vermelha" quando coloco este texto: "Morreu este sábado Mário Soares. O antigo presidente da República tinha 92 anos e estava internado no Hospital da Cruz Vermelha desde 13 de dezembro de 2016."
10
+ 12:36
11
+ Mas se colocar o texto todo já não o deteta: "Morreu este sábado Mário Soares. O antigo presidente da República tinha 92 anos e estava internado no Hospital da Cruz Vermelha desde 13 de dezembro de 2016. Além de chefe de Estado entre 1986 e 1996, Mário Soares foi primeiro-ministro por duas vezes e deputado do parlamento Europeu. Fundador do Partido Socialista, em 1973, Mário Soares é considerado um dos “pais” da democracia portuguesa, designação que o próprio sempre rejeitou, dizendo apenas ser “pai de dois filhos, mas lá pai da democracia não sou. Contribuí de alguma maneira para que a democracia triunfasse”. Enquanto primeiro-ministro, foi um dos principais responsáveis pela adesão de Portugal à então Comunidade Económica Europeia (CEE), cujo tratado de adesão foi assinado em junho de 1985. Ao longo dos 92 anos de vida, Mário Soares foi também advogado, tendo defendido dezenas de presos políticos no período da ditadura. Soares acabaria por ser um preso político na altura. O antigo chefe de Estado concorreu ainda ao cargo de presidente da República, em 2006, tendo ficado em terceiro lugar; Cavaco Silva foi, na altura, eleito chefe de Estado. (Notícia atualizada às 16h09)
12
+ 2023-03-19 12:56:43 O Primeiro-Ministro da altura, José Manuel Durão Barroso, prometeu restaurar a vida e a hora da instituição e permitiu que a nova diretora Catalina Pestana (1947-2018), nomeada em 2002 pelo Ministério da Segurança Social e do Trabalho, na altura tutelado por Bagão Félix, provedora da casa pia, reformasse a instituição.
13
+ 2023-03-19 12:58:13 A Joana foi atacada pelo João nas ruas do Porto, com uma faca.
14
+ 2023-03-19 12:58:28 O Primeiro-Ministro da altura, José Manuel Durão Barroso, prometeu restaurar a vida e a hora da instituição e permitiu que a nova diretora Catalina Pestana (1947-2018), nomeada em 2002 pelo Ministério da Segurança Social e do Trabalho, na altura tutelado por Bagão Félix, provedora da casa pia, reformasse a instituição.
15
+ 2023-03-19 12:59:36 A Joana foi atacada pelo João nas ruas do Porto, com uma faca.
16
+ 2023-03-19 12:59:51 O Primeiro-Ministro da altura, José Manuel Durão Barroso, prometeu restaurar a vida e a hora da instituição e permitiu que a nova diretora Catalina Pestana (1947-2018), nomeada em 2002 pelo Ministério da Segurança Social e do Trabalho, na altura tutelado por Bagão Félix, provedora da casa pia, reformasse a instituição.
17
+ 2023-03-19 13:01:01 A Joana foi atacada pelo João nas ruas do Porto, com uma faca.
18
+ 2023-03-19 13:01:17 A Joana foi atacada pelo João nas ruas do Porto, com uma faca.
19
+ 2023-03-19 13:01:43 O Primeiro-Ministro da altura, José Manuel Durão Barroso, prometeu restaurar a vida e a hora da instituição e permitiu que a nova diretora Catalina Pestana (1947-2018), nomeada em 2002 pelo Ministério da Segurança Social e do Trabalho, na altura tutelado por Bagão Félix, provedora da casa pia, reformasse a instituição.
20
+ 2023-03-19 13:03:05 O joão foi preso por matar o Joana
21
+ 2023-03-19 13:03:23 O João foi preso na prisão de Metas por matar o Joana
22
+ 2023-03-19 13:03:42 O João foi preso na prisão de Metas por matar a Joana.
23
+ 2023-03-19 13:04:02 O Primeiro-Ministro da altura, José Manuel Durão Barroso, prometeu restaurar a vida e a hora da instituição e permitiu que a nova diretora Catalina Pestana (1947-2018), nomeada em 2002 pelo Ministério da Segurança Social e do Trabalho, na altura tutelado por Bagão Félix, provedora da casa pia, reformasse a instituição.
24
+ 2023-03-19 13:05:32 O Primeiro-Ministro da altura, José Manuel Durão Barroso, prometeu restaurar a vida e a hora da instituição e permitiu que a nova diretora Catalina Pestana (1947-2018), nomeada em 2002 pelo Ministério da Segurança Social e do Trabalho, na altura tutelado por Bagão Félix, provedora da casa pia, reformasse a instituição
25
+ 2023-03-19 21:33:07 A Joana foi atacada pelo João nas ruas do Porto, com uma faca.
26
+ 2023-03-19 21:33:32 O Primeiro-Ministro da altura, José Manuel Durão Barroso, prometeu restaurar a vida e a hora da instituição e permitiu que a nova diretora Catalina Pestana (1947-2018), nomeada em 2002 pelo Ministério da Segurança Social e do Trabalho, na altura tutelado por Bagão Félix, provedora da casa pia, reformasse a instituição.
27
+ 2023-03-19 21:33:45 O Primeiro-Ministro da altura, José Manuel Durão Barroso, prometeu restaurar a vida e a hora da instituição e permitiu que a nova diretora Catalina Pestana (1947-2018), nomeada em 2002 pelo Ministério da Segurança Social e do Trabalho, na altura tutelado por Bagão Félix, provedora da casa pia, reformasse a instituição.
28
+ 2023-03-19 21:33:58 O Estado-Maior ucraniano informou também que a Rússia lançou 19 ataques aéreos e 37 ataques com sistemas de foguete de lançamento múltiplo no último dia, danificando cidades e aldeias e ferindo um número indeterminado de civis.
29
+ 2023-03-19 21:34:06 Pelos menos oito civis morreram numa série de ataques russos várias regiões da Ucrânia.
30
+ 2023-03-19 21:34:14 O comandante das Forças Armadas da Ucrânia declarou que a Rússia disparou 36 mísseis de cruzeiro contra o país na manhã de quinta-feira (16/02), um dia depois que seis balões foram vistos sobre a capital ucraniana, Kiev.
31
+ 2023-03-19 21:34:20 Disparados por terra e mar, os mísseis mataram uma mulher e atingiram infraestrutura crítica, segundo autoridades, que afirmaram também ter observado uma mudança na estratégia de guerra russa, em uma aparente referência aos balões avistados em Kiev.
32
+ 2023-03-19 21:34:28 O João morreu na guerra do Iraque.
33
+ 2023-03-19 21:34:39 A maria foi eleita presidente da republica em Portugal.
34
+ 2023-03-19 21:34:58 O Primeiro-Ministro da altura, José Manuel Durão Barroso, prometeu restaurar a vida e a hora da instituição e permitiu que a nova diretora Catalina Pestana (1947-2018), nomeada em 2002 pelo Ministério da Segurança Social e do Trabalho, na altura tutelado por Bagão Félix, provedora da casa pia, reformasse a instituição.
35
+ 2023-03-19 21:36:55 O caso BPN refere-se a um conjunto de casos interrelacionados que exibem indícios de vários tipos de crime, como corrupção, lavagem de dinheiro e tráfico de influências, e que levaram à nacionalização do BPN, banco a que estavam ligados ex-membros do núcleo duro do X governo Constitucional de Portugal (chefiado pcor Cavaco Silva), como Dias Loureiro, José Oliveira e Costa, Duarte Lima e Miguel Cadilhe. Entre as organizações envolvidas encontram-se, além do BPN, a sociedade lusa de negócios e o banco Insular. O final do caso BPN chega após um custo para o Estado Português de 3200 milhões de euros e consequente venda pelo governo PSD-PP de Passos Coelho ao banco BIC por 40 milhões de euros.[1] Em maio de 2010, foi votada e aprovada em Assembleia Geral da SLN a mudança de nome da Sociedade para Grupo Galilei, com 89,17% de votos favoráveis, numa Assembleia geral que teve 65,13% do capital representado. [5]Atualmente, no site do Grupo Galilei na Internet, a página "História" indica que o grupo foi fundado em 1999, mas não faz referência directa ao nome original, embora o mesmo se torne implícito. [6] Em janeiro de 2011, é tornado público que o ex-Primeiro-ministro e ex-Presidente da República de Portugal, Cavaco Silva, adquiriu as suas acções da então SLN a um preço especial (cerca de 40% a 60% abaixo do valor de mercado), o que estava reservado apenas para um conjunto selecionado de acionistas, e do qual Cavaco Silva não fazia parte. [7] No final de 2012, o total parcial de prejuízos causados, a serem pagos pelo Estado Português, ascendiam a 7 mil milhões de euros.[8] Em maio de 2017, foram condenados 12 dos arguidos processo principal do caso BPN. José Oliveira e Costa foi condenado a 14 anos de prisão por de abuso de confiança, burla qualificada, falsificação de documentos, infidelidade, aquisição ilícita de ações e de fraude fiscal no âmbito do processo do caso BPN.
36
+ 2023-03-19 21:40:43 Morreu este sábado Mário Soares. O antigo presidente da República tinha 92 anos e estava internado no Hospital da Cruz Vermelha desde 13 de dezembro de 2016
37
+ 2023-03-19 21:41:43 Morreu este sábado Mário Soares. O antigo presidente da República tinha 92 anos e estava internado no Hospital da Cruz Vermelha desde 13 de dezembro de 2016. Além de chefe de Estado entre 1986 e 1996, Mário Soares foi primeiro-ministro por duas vezes e deputado do parlamento Europeu. Fundador do Partido Socialista, em 1973, Mário Soares é considerado um dos “pais” da democracia portuguesa, designação que o próprio sempre rejeitou, dizendo apenas ser “pai de dois filhos, mas lá pai da democracia não sou. Contribuí de alguma maneira para que a democracia triunfasse”. Enquanto primeiro-ministro, foi um dos principais responsáveis pela adesão de Portugal à então Comunidade Económica Europeia (CEE), cujo tratado de adesão foi assinado em junho de 1985. Ao longo dos 92 anos de vida, Mário Soares foi também advogado, tendo defendido dezenas de presos políticos no período da ditadura. Soares acabaria por ser um preso político na altura. O antigo chefe de Estado concorreu ainda ao cargo de presidente da República, em 2006, tendo ficado em terceiro lugar; Cavaco Silva foi, na altura, eleito chefe de Estado. (Notícia atualizada às 16h09)
models/argument/bert-base-portuguese-squad-ace-pt-pt/config.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "neuralmind/bert-base-portuguese-cased",
3
+ "architectures": [
4
+ "BertForQuestionAnswering"
5
+ ],
6
+ "attention_probs_dropout_prob": 0.1,
7
+ "classifier_dropout": null,
8
+ "directionality": "bidi",
9
+ "hidden_act": "gelu",
10
+ "hidden_dropout_prob": 0.1,
11
+ "hidden_size": 768,
12
+ "initializer_range": 0.02,
13
+ "intermediate_size": 3072,
14
+ "layer_norm_eps": 1e-12,
15
+ "max_position_embeddings": 512,
16
+ "model_type": "bert",
17
+ "num_attention_heads": 12,
18
+ "num_hidden_layers": 12,
19
+ "output_past": true,
20
+ "pad_token_id": 0,
21
+ "pooler_fc_size": 768,
22
+ "pooler_num_attention_heads": 12,
23
+ "pooler_num_fc_layers": 3,
24
+ "pooler_size_per_head": 128,
25
+ "pooler_type": "first_token_transform",
26
+ "position_embedding_type": "absolute",
27
+ "torch_dtype": "float32",
28
+ "transformers_version": "4.24.0",
29
+ "type_vocab_size": 2,
30
+ "use_cache": true,
31
+ "vocab_size": 29794
32
+ }
models/argument/bert-base-portuguese-squad-ace-pt-pt/pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3e780e4a4f463770ff370a9f622e9c14407e1449d9faa7cf42e256ca1ff0a297
3
+ size 433408493
models/argument/bert-base-portuguese-squad-ace-pt-pt/special_tokens_map.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "cls_token": "[CLS]",
3
+ "mask_token": "[MASK]",
4
+ "pad_token": "[PAD]",
5
+ "sep_token": "[SEP]",
6
+ "unk_token": "[UNK]"
7
+ }
models/argument/bert-base-portuguese-squad-ace-pt-pt/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
models/argument/bert-base-portuguese-squad-ace-pt-pt/tokenizer_config.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cls_token": "[CLS]",
3
+ "do_basic_tokenize": true,
4
+ "do_lower_case": false,
5
+ "mask_token": "[MASK]",
6
+ "name_or_path": "neuralmind/bert-base-portuguese-cased",
7
+ "never_split": null,
8
+ "pad_token": "[PAD]",
9
+ "sep_token": "[SEP]",
10
+ "special_tokens_map_file": "/home/dock/.cache/huggingface/hub/models--neuralmind--bert-base-portuguese-cased/snapshots/94d69c95f98f7d5b2a8700c420230ae10def0baa/special_tokens_map.json",
11
+ "strip_accents": null,
12
+ "tokenize_chinese_chars": true,
13
+ "tokenizer_class": "BertTokenizer",
14
+ "unk_token": "[UNK]"
15
+ }
models/argument/bert-base-portuguese-squad-ace-pt-pt/training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8c2f6cd690fdc95145680507cc5fd3089ac8f1bcb4e4263e88d9831cc2e4203e
3
+ size 3451
models/argument/bert-base-portuguese-squad-ace-pt-pt/vocab.txt ADDED
The diff for this file is too large to render. See raw diff
 
models/argument/bert-base-portuguese-squad2-ace-impossible1.4/config.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "bert-base-portuguese-squad2",
3
+ "architectures": [
4
+ "BertForQuestionAnswering"
5
+ ],
6
+ "attention_probs_dropout_prob": 0.1,
7
+ "classifier_dropout": null,
8
+ "directionality": "bidi",
9
+ "hidden_act": "gelu",
10
+ "hidden_dropout_prob": 0.1,
11
+ "hidden_size": 768,
12
+ "initializer_range": 0.02,
13
+ "intermediate_size": 3072,
14
+ "layer_norm_eps": 1e-12,
15
+ "max_position_embeddings": 512,
16
+ "model_type": "bert",
17
+ "num_attention_heads": 12,
18
+ "num_hidden_layers": 12,
19
+ "output_past": true,
20
+ "pad_token_id": 0,
21
+ "pooler_fc_size": 768,
22
+ "pooler_num_attention_heads": 12,
23
+ "pooler_num_fc_layers": 3,
24
+ "pooler_size_per_head": 128,
25
+ "pooler_type": "first_token_transform",
26
+ "position_embedding_type": "absolute",
27
+ "torch_dtype": "float32",
28
+ "transformers_version": "4.24.0",
29
+ "type_vocab_size": 2,
30
+ "use_cache": true,
31
+ "vocab_size": 29794
32
+ }
models/argument/bert-base-portuguese-squad2-ace-impossible1.4/pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a32394214fec44368c6a3af58d37399a7a61ecd0e7eb5bc0e485a8d01790bea9
3
+ size 433408493
models/argument/bert-base-portuguese-squad2-ace-impossible1.4/special_tokens_map.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "cls_token": "[CLS]",
3
+ "mask_token": "[MASK]",
4
+ "pad_token": "[PAD]",
5
+ "sep_token": "[SEP]",
6
+ "unk_token": "[UNK]"
7
+ }
models/argument/bert-base-portuguese-squad2-ace-impossible1.4/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
models/argument/bert-base-portuguese-squad2-ace-impossible1.4/tokenizer_config.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cls_token": "[CLS]",
3
+ "do_basic_tokenize": true,
4
+ "do_lower_case": false,
5
+ "mask_token": "[MASK]",
6
+ "name_or_path": "neuralmind/bert-base-portuguese-cased",
7
+ "never_split": null,
8
+ "pad_token": "[PAD]",
9
+ "sep_token": "[SEP]",
10
+ "special_tokens_map_file": "/home/dock/.cache/huggingface/hub/models--neuralmind--bert-base-portuguese-cased/snapshots/94d69c95f98f7d5b2a8700c420230ae10def0baa/special_tokens_map.json",
11
+ "strip_accents": null,
12
+ "tokenize_chinese_chars": true,
13
+ "tokenizer_class": "BertTokenizer",
14
+ "unk_token": "[UNK]"
15
+ }
models/argument/bert-base-portuguese-squad2-ace-impossible1.4/training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2228679f009f7c6f15b9a58e5a5feb0ad51acdbe38e9a636abc148550a01ecab
3
+ size 3387
models/argument/bert-base-portuguese-squad2-ace-impossible1.4/vocab.txt ADDED
The diff for this file is too large to render. See raw diff
 
models/trigger/ACE_base_google_pt/config.json ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "neuralmind/bert-base-portuguese-cased",
3
+ "architectures": [
4
+ "BertForTokenClassification"
5
+ ],
6
+ "attention_probs_dropout_prob": 0.1,
7
+ "classifier_dropout": null,
8
+ "directionality": "bidi",
9
+ "hidden_act": "gelu",
10
+ "hidden_dropout_prob": 0.1,
11
+ "hidden_size": 768,
12
+ "id2label": {
13
+ "0": "I-Personnel.End_Position",
14
+ "1": "B-Justice.Appeal",
15
+ "2": "B-Justice.Release_Parole",
16
+ "3": "B-Justice.Extradite",
17
+ "4": "B-Personnel.Nominate",
18
+ "5": "I-Business.End_Org",
19
+ "6": "I-Life.Injure",
20
+ "7": "I-Justice.Charge_Indict",
21
+ "8": "B-Contact.Phone_Write",
22
+ "9": "O",
23
+ "10": "I-Contact.Phone_Write",
24
+ "11": "I-Justice.Release_Parole",
25
+ "12": "I-Justice.Acquit",
26
+ "13": "B-Personnel.Elect",
27
+ "14": "B-Business.Merge_Org",
28
+ "15": "B-Justice.Pardon",
29
+ "16": "I-Justice.Arrest_Jail",
30
+ "17": "I-Contact.Meet",
31
+ "18": "B-Personnel.Start_Position",
32
+ "19": "B-Conflict.Demonstrate",
33
+ "20": "I-Personnel.Start_Position",
34
+ "21": "I-Personnel.Elect",
35
+ "22": "I-Life.Die",
36
+ "23": "B-Justice.Sentence",
37
+ "24": "I-Business.Merge_Org",
38
+ "25": "I-Life.Be_Born",
39
+ "26": "B-Justice.Acquit",
40
+ "27": "B-Movement.Transport",
41
+ "28": "B-Conflict.Attack",
42
+ "29": "B-Life.Injure",
43
+ "30": "I-Conflict.Demonstrate",
44
+ "31": "I-Business.Start_Org",
45
+ "32": "B-Justice.Trial_Hearing",
46
+ "33": "B-Business.Start_Org",
47
+ "34": "B-Transaction.Transfer_Money",
48
+ "35": "B-Life.Divorce",
49
+ "36": "B-Justice.Arrest_Jail",
50
+ "37": "B-Justice.Convict",
51
+ "38": "I-Justice.Convict",
52
+ "39": "B-Justice.Sue",
53
+ "40": "B-Business.End_Org",
54
+ "41": "I-Life.Marry",
55
+ "42": "B-Justice.Fine",
56
+ "43": "B-Life.Die",
57
+ "44": "B-Business.Declare_Bankruptcy",
58
+ "45": "I-Justice.Sue",
59
+ "46": "I-Conflict.Attack",
60
+ "47": "B-Transaction.Transfer_Ownership",
61
+ "48": "B-Personnel.End_Position",
62
+ "49": "B-Contact.Meet",
63
+ "50": "B-Life.Marry",
64
+ "51": "I-Justice.Sentence",
65
+ "52": "I-Transaction.Transfer_Ownership",
66
+ "53": "I-Movement.Transport",
67
+ "54": "B-Life.Be_Born",
68
+ "55": "I-Justice.Execute",
69
+ "56": "B-Justice.Execute",
70
+ "57": "B-Justice.Charge_Indict",
71
+ "58": "I-Justice.Extradite",
72
+ "59": "I-Transaction.Transfer_Money"
73
+ },
74
+ "initializer_range": 0.02,
75
+ "intermediate_size": 3072,
76
+ "label2id": {
77
+ "B-Business.Declare_Bankruptcy": 44,
78
+ "B-Business.End_Org": 40,
79
+ "B-Business.Merge_Org": 14,
80
+ "B-Business.Start_Org": 33,
81
+ "B-Conflict.Attack": 28,
82
+ "B-Conflict.Demonstrate": 19,
83
+ "B-Contact.Meet": 49,
84
+ "B-Contact.Phone_Write": 8,
85
+ "B-Justice.Acquit": 26,
86
+ "B-Justice.Appeal": 1,
87
+ "B-Justice.Arrest_Jail": 36,
88
+ "B-Justice.Charge_Indict": 57,
89
+ "B-Justice.Convict": 37,
90
+ "B-Justice.Execute": 56,
91
+ "B-Justice.Extradite": 3,
92
+ "B-Justice.Fine": 42,
93
+ "B-Justice.Pardon": 15,
94
+ "B-Justice.Release_Parole": 2,
95
+ "B-Justice.Sentence": 23,
96
+ "B-Justice.Sue": 39,
97
+ "B-Justice.Trial_Hearing": 32,
98
+ "B-Life.Be_Born": 54,
99
+ "B-Life.Die": 43,
100
+ "B-Life.Divorce": 35,
101
+ "B-Life.Injure": 29,
102
+ "B-Life.Marry": 50,
103
+ "B-Movement.Transport": 27,
104
+ "B-Personnel.Elect": 13,
105
+ "B-Personnel.End_Position": 48,
106
+ "B-Personnel.Nominate": 4,
107
+ "B-Personnel.Start_Position": 18,
108
+ "B-Transaction.Transfer_Money": 34,
109
+ "B-Transaction.Transfer_Ownership": 47,
110
+ "I-Business.End_Org": 5,
111
+ "I-Business.Merge_Org": 24,
112
+ "I-Business.Start_Org": 31,
113
+ "I-Conflict.Attack": 46,
114
+ "I-Conflict.Demonstrate": 30,
115
+ "I-Contact.Meet": 17,
116
+ "I-Contact.Phone_Write": 10,
117
+ "I-Justice.Acquit": 12,
118
+ "I-Justice.Arrest_Jail": 16,
119
+ "I-Justice.Charge_Indict": 7,
120
+ "I-Justice.Convict": 38,
121
+ "I-Justice.Execute": 55,
122
+ "I-Justice.Extradite": 58,
123
+ "I-Justice.Release_Parole": 11,
124
+ "I-Justice.Sentence": 51,
125
+ "I-Justice.Sue": 45,
126
+ "I-Life.Be_Born": 25,
127
+ "I-Life.Die": 22,
128
+ "I-Life.Injure": 6,
129
+ "I-Life.Marry": 41,
130
+ "I-Movement.Transport": 53,
131
+ "I-Personnel.Elect": 21,
132
+ "I-Personnel.End_Position": 0,
133
+ "I-Personnel.Start_Position": 20,
134
+ "I-Transaction.Transfer_Money": 59,
135
+ "I-Transaction.Transfer_Ownership": 52,
136
+ "O": 9
137
+ },
138
+ "layer_norm_eps": 1e-12,
139
+ "max_position_embeddings": 512,
140
+ "model_type": "bert",
141
+ "num_attention_heads": 12,
142
+ "num_hidden_layers": 12,
143
+ "output_past": true,
144
+ "pad_token_id": 0,
145
+ "pooler_fc_size": 768,
146
+ "pooler_num_attention_heads": 12,
147
+ "pooler_num_fc_layers": 3,
148
+ "pooler_size_per_head": 128,
149
+ "pooler_type": "first_token_transform",
150
+ "position_embedding_type": "absolute",
151
+ "torch_dtype": "float32",
152
+ "transformers_version": "4.24.0",
153
+ "type_vocab_size": 2,
154
+ "use_cache": true,
155
+ "vocab_size": 29794
156
+ }
models/trigger/ACE_base_google_pt/pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:04378f59b3c0109dfff0a6090c3db0fb98f00de8915dacd8a344f26f76a797e9
3
+ size 433586861
models/trigger/ACE_base_google_pt/special_tokens_map.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "cls_token": "[CLS]",
3
+ "mask_token": "[MASK]",
4
+ "pad_token": "[PAD]",
5
+ "sep_token": "[SEP]",
6
+ "unk_token": "[UNK]"
7
+ }
models/trigger/ACE_base_google_pt/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
models/trigger/ACE_base_google_pt/tokenizer_config.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cls_token": "[CLS]",
3
+ "do_basic_tokenize": true,
4
+ "do_lower_case": false,
5
+ "mask_token": "[MASK]",
6
+ "name_or_path": "neuralmind/bert-base-portuguese-cased",
7
+ "never_split": null,
8
+ "pad_token": "[PAD]",
9
+ "sep_token": "[SEP]",
10
+ "special_tokens_map_file": "/home/dock/.cache/huggingface/hub/models--neuralmind--bert-base-portuguese-cased/snapshots/94d69c95f98f7d5b2a8700c420230ae10def0baa/special_tokens_map.json",
11
+ "strip_accents": null,
12
+ "tokenize_chinese_chars": true,
13
+ "tokenizer_class": "BertTokenizer",
14
+ "unk_token": "[UNK]"
15
+ }
models/trigger/ACE_base_google_pt/training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ce2c10b94ccfa9621cd6a8da34af3dadbb061ea80e75be32caa3a202bb5ab48f
3
+ size 3387
models/trigger/ACE_base_google_pt/vocab.txt ADDED
The diff for this file is too large to render. See raw diff
 
questions.json ADDED
@@ -0,0 +1,227 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Business.Declare_Bankruptcy": {
3
+ "Org": "O que declara falência?",
4
+ "Place": "Onde se realiza o evento?",
5
+ "Time": "Quando é o transporte?"
6
+ },
7
+ "Business.End_Org": {
8
+ "Place": "Onde se realiza o evento?",
9
+ "Org": "O que acabou?",
10
+ "Time": "Quando é o evento?"
11
+
12
+ },
13
+ "Business.Merge_Org": {
14
+ "Org": "O que é fundido?",
15
+ "Time": "Quando é o evento?",
16
+ "Place":"Onde é o evento?"
17
+ },
18
+ "Business.Start_Org": {
19
+ "Org": "O que é iniciado?",
20
+ "Place": "Onde se realiza o evento?",
21
+ "Agent": "Quem é o fundador?",
22
+ "Time": "Quando é o evento?"
23
+ },
24
+ "Conflict.Attack": {
25
+ "Place": "Onde se realiza o evento?",
26
+ "Target": "Quem é o alvo?",
27
+ "Attacker": "Quem é o atacante?",
28
+ "Instrument": "Qual é o instrumento utilizado?",
29
+ "Time": "Quando é o evento?"
30
+ },
31
+ "Conflict.Demonstrate": {
32
+ "Entity": "Quem está a demonstrar?",
33
+ "Place": "Onde se realiza o evento?",
34
+ "Time": "Quando é o evento?"
35
+ },
36
+ "Contact.Meet": {
37
+ "Entity": "Quem está se reunindo?",
38
+ "Place": "Onde se realiza o evento?",
39
+ "Time": "Quando é o evento?"
40
+ },
41
+ "Contact.Phone_Write": {
42
+ "Entity": "Quem são os agentes de comunicação?",
43
+ "Place": "Onde se realiza o evento?",
44
+ "Time": "Quando é o evento?"
45
+ },
46
+ "Justice.Acquit": {
47
+ "Defendant": "Quem é absolvido?",
48
+ "Adjudicator": "Quem é o adjudicador?",
49
+ "Time": "Quando é a absolvição?",
50
+ "Place": "Onde se realiza a absolvição?",
51
+ "Crime": "Qual é o crime?"
52
+ },
53
+ "Justice.Appeal": {
54
+ "Plaintiff": "Quem recorre?",
55
+ "Adjudicator": "Quem é o adjudicador?",
56
+ "Prosecutor": "Quem é o agente de acusação?",
57
+ "Place": "Onde se realiza o evento?",
58
+ "Time": "Quando é o recurso?",
59
+ "Crime": "Qual é o crime?"
60
+ },
61
+ "Justice.Arrest_Jail": {
62
+ "Person": "Quem está preso?",
63
+ "Agent": "Quem é o carcereiro?",
64
+ "Crime": "Qual é o crime?",
65
+ "Time": "Quando é o evento?",
66
+ "Place": "Onde se realiza o evento?"
67
+ },
68
+ "Justice.Charge_Indict": {
69
+ "Adjudicator": "Quem é o adjudicador?",
70
+ "Defendant": "Quem é o réu?",
71
+ "Prosecutor": "Quem é o agente de acusação?",
72
+ "Crime": "Qual é o crime?",
73
+ "Place": "Onde se realiza o evento?",
74
+ "Time": "Quando é a acusação?"
75
+ },
76
+ "Justice.Convict": {
77
+ "Defendant": "Quem é condenado?",
78
+ "Crime": "Qual é o crime?",
79
+ "Adjudicator": "Quem é o adjudicador?",
80
+ "Place": "Onde se realiza o evento?",
81
+ "Time": "Quando é a condenação?"
82
+ },
83
+ "Justice.Execute": {
84
+ "Place": "Onde se realiza a execução?",
85
+ "Agent": "Quem realiza a execução?",
86
+ "Person": "Quem é executado?",
87
+ "Crime": "Qual é o crime?",
88
+ "Time": "Quando é a execução?"
89
+ },
90
+ "Justice.Extradite": {
91
+ "Origin": "Onde é a origem da extradição?",
92
+ "Destination": "Onde é o destino da extradição?",
93
+ "Agent": "Quem é o agente de extradição?",
94
+ "Crime": "Qual é o crime?",
95
+ "Time": "Quando é a extradição?",
96
+ "Person": "Quem é extraditado?"
97
+ },
98
+ "Justice.Fine": {
99
+ "Entity": "Quem é multado?",
100
+ "Adjudicator": "Quem multa?",
101
+ "Money": "Qual é o valor da multa?",
102
+ "Crime": "Qual é o crime?",
103
+ "Place": "Onde é a multa?",
104
+ "Time": "Quando é a multa?"
105
+ },
106
+ "Justice.Pardon": {
107
+ "Adjudicator": "Quem é o adjudicador?",
108
+ "Place": "Onde se realiza o evento?",
109
+ "Crime": "Qual é o crime?",
110
+ "Time": "Quando é o evento?",
111
+ "Defendant": "Quem foi perdoado?"
112
+ },
113
+ "Justice.Release_Parole": {
114
+ "Entity": "Quem liberta?",
115
+ "Crime": "Qual é o crime?",
116
+ "Person": "Quem é libertado?",
117
+ "Place": "Onde se realiza o evento?",
118
+ "Time": "Quando é o evento?"
119
+ },
120
+ "Justice.Sentence": {
121
+ "Defendant": "Quem é sentenciado?",
122
+ "Adjudicator": "Quem é o adjudicador?",
123
+ "Crime": "Qual é o crime?",
124
+ "Sentence": "Qual é a sentença?",
125
+ "Place": "Onde se realiza o evento?",
126
+ "Time": "Quando é o evento?"
127
+ },
128
+ "Justice.Sue": {
129
+ "Plaintiff": "Qual é que processa?",
130
+ "Defendant": "Quem é processado?",
131
+ "Adjudicator": "Quem é o adjudicador?",
132
+ "Place": "Onde se realiza o evento?",
133
+ "Crime": "Qual é o crime?",
134
+ "Time": "Quando é a acusação?"
135
+ },
136
+ "Justice.Trial_Hearing": {
137
+ "Defendant": "Quem é o réu?",
138
+ "Place": "Onde se realiza o evento?",
139
+ "Adjudicator": "Quem é o adjudicador?",
140
+ "Prosecutor": "Quem é o agente de acusação?",
141
+ "Crime": "Qual é o crime?",
142
+ "Time": "Quando é o evento?"
143
+ },
144
+ "Life.Be_Born": {
145
+ "Place": "Onde se realiza o evento?",
146
+ "Person": "Quem nasce?",
147
+ "Time": "Quando é o nascimento?"
148
+ },
149
+ "Life.Die": {
150
+ "Victim": "Quem morreu?",
151
+ "Agent": "Quem é o assassino?",
152
+ "Place": "Onde se realiza o evento?",
153
+ "Instrument": "Qual é o instrumento utilizado?",
154
+ "Time": "Quando é o evento?"
155
+ },
156
+ "Life.Divorce": {
157
+ "Person": "Quem são os divorciados?",
158
+ "Place": "Onde se realiza o evento?",
159
+ "Time": "Quando é o divórcio?"
160
+ },
161
+ "Life.Injure": {
162
+ "Victim": "Quem é a vítima?",
163
+ "Agent": "Quem é o agente atacante?",
164
+ "Place": "Onde se realiza o evento?",
165
+ "Instrument": "Qual é o instrumento utilizado?",
166
+ "Time": "Quando é o evento?"
167
+ },
168
+ "Life.Marry": {
169
+ "Person": "Quem são casados?",
170
+ "Place": "Onde se realiza o evento?",
171
+ "Time": "Quando é o casamento?"
172
+ },
173
+ "Movement.Transport": {
174
+ "Vehicle": "Qual é o veículo utilizado?",
175
+ "Artifact": "O que está sendo transportado?",
176
+ "Destination": "Onde o transporte é direcionado?",
177
+ "Agent": "Quem é responsável pelo evento de transporte?",
178
+ "Origin": "Onde o transporte se originou?",
179
+ "Time": "Quando é o transporte?",
180
+ "Price":"Qual é o custo do transporte?"
181
+ },
182
+ "Personnel.Elect": {
183
+ "Person": "Quem é eleito?",
184
+ "Entity": "Quem votou?",
185
+ "Place": "Onde se realiza o evento?",
186
+ "Time": "Quando é a eleição?",
187
+ "Position":"Qual é a posição da eleição?"
188
+ },
189
+ "Personnel.End_Position": {
190
+ "Entity": "Quem é o empregador?",
191
+ "Person": "Quem é o empregado?",
192
+ "Place": "Onde se realiza o evento?",
193
+ "Time": "Quando é o evento?",
194
+ "Position":"Qual é a posição deixada?"
195
+ },
196
+ "Personnel.Nominate": {
197
+ "Person": "Quem é nomeado?",
198
+ "Agent": "Quem é o agente de nomeação?",
199
+ "Position": "Qual é a posição da nomeação?",
200
+ "Place": "Onde se realiza a nomeação?",
201
+ "Time": "Quando é a nomeação?"
202
+ },
203
+ "Personnel.Start_Position": {
204
+ "Person": "Quem é o empregado?",
205
+ "Entity": "Quem é o empregador?",
206
+ "Place": "Onde se realiza o evento?",
207
+ "Time": "Quando é o evento?",
208
+ "Position":"Qual é a nova posição?"
209
+ },
210
+ "Transaction.Transfer_Money": {
211
+ "Giver": "Quem é o agente doador?",
212
+ "Recipient": "Quem é o destinatário?",
213
+ "Beneficiary": "Quem se beneficia com a transferência?",
214
+ "Place": "Onde se realiza o evento?",
215
+ "Time": "Quando é a transferência?",
216
+ "Money":"Quanto é transferido?"
217
+ },
218
+ "Transaction.Transfer_Ownership": {
219
+ "Buyer": "Quem é o agente comprador?",
220
+ "Artifact": "O que foi comprado?",
221
+ "Seller": "Quem é o agente vendedor?",
222
+ "Place": "Onde se realiza o evento?",
223
+ "Beneficiary": "Quem é o beneficiário da transação?",
224
+ "Time": "Quando é a transação?",
225
+ "Price": "Qual é o preço da transação?"
226
+ }
227
+ }
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ st-annotated-text
2
+ torch
3
+ transformers
4
+ tqdm
5
+ numpy
6
+ pysbd