Main brez modelov
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
import os
|
||||
import glob
|
||||
import json
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
import warnings
|
||||
warnings.filterwarnings("ignore", category=FutureWarning)
|
||||
|
||||
def read_conll(f, lowercase=True, max_example=None):
|
||||
examples = []
|
||||
# with open(in_file) as f:
|
||||
word, lemma, pos, msd, label = [], [], [], [], []
|
||||
for line in f.readlines():
|
||||
sp = line.decode('utf-8').strip().split('\t')
|
||||
# print(sp)
|
||||
if len(sp) == 10:
|
||||
if '-' not in sp[0]:
|
||||
word.append(sp[1].lower() if lowercase else sp[1])
|
||||
lemma.append(sp[2].lower() if lowercase else sp[2])
|
||||
pos.append(sp[3])
|
||||
msd.append(sp[4])
|
||||
label.append('n')
|
||||
elif len(word) > 0:
|
||||
examples.append({'word': word, 'lemma': lemma, 'pos': pos, 'msd':msd, 'labels': label})
|
||||
word, lemma, pos, msd, label = [], [], [], [], []
|
||||
if (max_example is not None) and (len(examples) == max_example):
|
||||
break
|
||||
if len(word) > 0:
|
||||
examples.append({'word': word, 'lemma': lemma, 'pos': pos, 'msd':msd, 'labels': label})
|
||||
return pd.DataFrame(examples)
|
||||
|
||||
|
||||
def extract_terms_full(token_predictions,token_probabilities, val_texts, lemma_texts, pos_texts, msd_texts):
|
||||
extracted_terms = list()
|
||||
extracted_probs = list()
|
||||
lemma_terms = list()
|
||||
pos_terms = list()
|
||||
msd_terms = list()
|
||||
# go over all predictions
|
||||
for i in range(len(token_predictions)):
|
||||
pred = token_predictions[i]
|
||||
prob = token_probabilities[i]
|
||||
txt = val_texts[i]
|
||||
lemma = lemma_texts[i]
|
||||
pos = pos_texts[i]
|
||||
msd = msd_texts[i]
|
||||
for j in range(len(pred)):
|
||||
if pred[j] == "B-T":
|
||||
term = txt[j]
|
||||
prob_term = str(round(prob[j][1],4))
|
||||
lemma_term = lemma[j]
|
||||
pos_term = pos[j]
|
||||
msd_term = msd[j]
|
||||
for k in range(j+1,len(pred)):
|
||||
if pred[k]=="T":
|
||||
term+=" "+txt[k]
|
||||
prob_term+=" "+str(round(prob[k][2],4))
|
||||
lemma_term+=" "+ lemma[k]
|
||||
pos_term+=" "+ pos[k]
|
||||
msd_term+=" "+ msd[k]
|
||||
else: break
|
||||
extracted_terms.append(term)
|
||||
extracted_probs.append(prob_term)
|
||||
lemma_terms.append(lemma_term)
|
||||
pos_terms.append(pos_term)
|
||||
msd_terms.append(msd_term)
|
||||
return extracted_terms, extracted_probs, lemma_terms, pos_terms, msd_terms
|
||||
|
||||
def remap(tokenizer, texts, preds, probs):
|
||||
text = texts.split(' ')
|
||||
len_token = []
|
||||
res_pred = []
|
||||
final_pred = []
|
||||
res_prob = []
|
||||
final_prob = []
|
||||
for i in range(len(text)):
|
||||
temp = len(tokenizer(text[i], add_special_tokens=False)['input_ids'])
|
||||
len_token.append(temp)
|
||||
for val in len_token:
|
||||
res_pred.append(val)
|
||||
res_pred.extend([0]*(val-1))
|
||||
res_prob.append(val)
|
||||
res_prob.extend([0]*(val-1))
|
||||
for p1, p2 in zip(res_pred, preds[1:len(preds)-1]):
|
||||
if p1 != 0:
|
||||
final_pred.append(p2)
|
||||
for p1, p2 in zip(res_prob, probs[1:len(probs)-1]):
|
||||
if p1 != 0:
|
||||
final_prob.append(p2)
|
||||
return text, final_pred, final_prob
|
||||
Reference in New Issue
Block a user