persian-reverse-dict / pipeline.py
behnamsa's picture
Fix pipeline sample output
d22d58c
raw
history blame
3.08 kB
# from scipy.special import softmax
import tensorflow as tf
class PreTrainedPipeline():
def __init__(self, path):
# define the best model TODO
sequence_input = tf.keras.Input(shape=(300), name='input')
x = tf.keras.layers.Dense(2048, activation="LeakyReLU")(sequence_input)
x = tf.keras.layers.Dense(1024, activation="LeakyReLU")(x)
x = tf.keras.layers.Dense(512, activation="LeakyReLU")(x)
x = tf.keras.layers.Dense(128, activation="LeakyReLU")(x)
x = tf.keras.layers.Dense(512, activation="LeakyReLU")(x)
x = tf.keras.layers.Dense(1024, activation="LeakyReLU")(x)
x = tf.keras.layers.Dense(2048, activation="LeakyReLU")(x)
outputs = tf.keras.layers.Dense(300, activation="tanh")(x)
model = tf.keras.Model(sequence_input, outputs)
model.compile(optimizer="Adamax", loss="cosine_similarity")
# model.load_weights("path to model file") TODO
self.model = model
def __call__(self, inputs: str):
return [
[ # Sample output, call the model here TODO
{'label': 'POSITIVE', 'score': 0.05},
{'label': 'NEGATIVE', 'score': 0.03},
{'label': 'معنی', 'score': 0.92},
{'label': f'{inputs}', 'score': 0},
]
]
# def RevDict(sent,flag,model):
# """
# This function recieves a sentence from the user, and turns back top_10 (for flag=0) or top_100 (for flag=1) predictions.
# the input sentence will be normalized, and stop words will be removed
# """
# normalizer = Normalizer()
# X_Normalized = normalizer.normalize(sent)
# X_Tokens = word_tokenize(X_Normalized)
# stopwords = [normalizer.normalize(x.strip()) for x in codecs.open(r"stopwords.txt",'r','utf-8').readlines()]
# X_Tokens = [t for t in X_Tokens if t not in stopwords]
# preprocessed = [' '.join(X_Tokens)][0]
# sent_ids = sent2id([preprocessed])
# output=np.array((model.predict(sent_ids.reshape((1,20))).tolist()[0]))
# distances=distance.cdist(output.reshape((1,300)), comparison_matrix, "cosine")[0]
# min_index_100 = distances.argsort()[:100]
# min_index_10 = distances.argsort()[:10]
# temp=[]
# if flag == 0:
# for i in range(10):
# temp.append(id2h[str(min_index_10[i])])
# elif flag == 1:
# for i in range(100):
# temp.append(id2h[str(min_index_100[i])])
# for i in range(len(temp)):
# print(temp[i])
# def sent2id(sents):
# sents_id=np.zeros((len(sents),20))
# for j in tqdm(range(len(sents))):
# for i,word in enumerate(sents[j].split()):
# try:
# sents_id[j,i] = t2id[word]
# except:
# sents_id[j,i] = t2id['UNK']
# if i==19:
# break
# return sents_id