Spaces:
Sleeping
Sleeping
Add App
Browse files- .streamlit/config.toml +2 -0
- README.md +4 -4
- app.py +410 -0
- logs.txt +37 -0
- models/argument/bert-base-portuguese-squad-ace-pt-pt/config.json +32 -0
- models/argument/bert-base-portuguese-squad-ace-pt-pt/pytorch_model.bin +3 -0
- models/argument/bert-base-portuguese-squad-ace-pt-pt/special_tokens_map.json +7 -0
- models/argument/bert-base-portuguese-squad-ace-pt-pt/tokenizer.json +0 -0
- models/argument/bert-base-portuguese-squad-ace-pt-pt/tokenizer_config.json +15 -0
- models/argument/bert-base-portuguese-squad-ace-pt-pt/training_args.bin +3 -0
- models/argument/bert-base-portuguese-squad-ace-pt-pt/vocab.txt +0 -0
- models/argument/bert-base-portuguese-squad2-ace-impossible1.4/config.json +32 -0
- models/argument/bert-base-portuguese-squad2-ace-impossible1.4/pytorch_model.bin +3 -0
- models/argument/bert-base-portuguese-squad2-ace-impossible1.4/special_tokens_map.json +7 -0
- models/argument/bert-base-portuguese-squad2-ace-impossible1.4/tokenizer.json +0 -0
- models/argument/bert-base-portuguese-squad2-ace-impossible1.4/tokenizer_config.json +15 -0
- models/argument/bert-base-portuguese-squad2-ace-impossible1.4/training_args.bin +3 -0
- models/argument/bert-base-portuguese-squad2-ace-impossible1.4/vocab.txt +0 -0
- models/trigger/ACE_base_google_pt/config.json +156 -0
- models/trigger/ACE_base_google_pt/pytorch_model.bin +3 -0
- models/trigger/ACE_base_google_pt/special_tokens_map.json +7 -0
- models/trigger/ACE_base_google_pt/tokenizer.json +0 -0
- models/trigger/ACE_base_google_pt/tokenizer_config.json +15 -0
- models/trigger/ACE_base_google_pt/training_args.bin +3 -0
- models/trigger/ACE_base_google_pt/vocab.txt +0 -0
- questions.json +227 -0
- 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:
|
5 |
-
colorTo:
|
6 |
sdk: streamlit
|
7 |
-
sdk_version: 1.
|
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
|