Spaces:
Sleeping
Sleeping
Chananchida
commited on
Update app.py
Browse files
app.py
CHANGED
@@ -142,30 +142,8 @@ class Chatbot:
|
|
142 |
similar_contexts = [self.df['Context'][indices[0][i]] for i in range(self.k)]
|
143 |
return similar_questions, similar_contexts, distances, indices
|
144 |
|
145 |
-
def predict_faiss(self, message):
|
146 |
-
message = message.strip()
|
147 |
-
question_vector = self.get_embeddings(message)
|
148 |
-
question_vector = self.prepare_sentences_vector([question_vector])
|
149 |
-
similar_questions, similar_contexts, distances, indices = self.faiss_search(question_vector)
|
150 |
-
Answers = [self.df['Answer'][i] for i in indices[0]]
|
151 |
-
Answer = Answers[0]
|
152 |
-
|
153 |
-
return Answer
|
154 |
-
|
155 |
-
def predict_faiss(self, message):
|
156 |
-
message = message.strip()
|
157 |
-
question_vector = self.get_embeddings([message])
|
158 |
-
question_vector = self.prepare_sentences_vector([question_vector])
|
159 |
-
similar_questions, similar_contexts, distances, indices = self.faiss_search(question_vector)
|
160 |
-
Answers = [self.df['Answer'][i] for i in indices[0]]
|
161 |
-
Answer = Answers[0]
|
162 |
-
|
163 |
-
return Answer
|
164 |
-
|
165 |
-
|
166 |
|
167 |
-
|
168 |
-
def predict_bert_embedding(self,message):
|
169 |
message = message.strip()
|
170 |
question_vector = self.get_embeddings(message)
|
171 |
question_vector=self.prepare_sentences_vector([question_vector])
|
@@ -173,62 +151,11 @@ class Chatbot:
|
|
173 |
Answer = self.model_pipeline(similar_questions, similar_contexts)
|
174 |
return Answer
|
175 |
|
176 |
-
# def predict_semantic_search(self,message,corpus_embeddings):
|
177 |
-
# message = message.strip()
|
178 |
-
# query_embedding = self.embedding_model.encode(message, convert_to_tensor=True)
|
179 |
-
# query_embedding = query_embedding.to('cpu')
|
180 |
-
# hits = util.semantic_search(query_embedding, corpus_embeddings, top_k=1)
|
181 |
-
# hit = hits[0][0]
|
182 |
-
# context=self.df['Context'][hit['corpus_id']]
|
183 |
-
# score="{:.4f})".format(hit['score'])
|
184 |
-
# Answer = self.model_pipeline(message, context)
|
185 |
-
# return Answer
|
186 |
-
def predict_semantic_search(self, message):
|
187 |
-
corpus_embeddings = bot._chatbot.prepare_sentences_vector(bot._chatbot.get_embeddings(bot._chatbot.df['Context']))
|
188 |
-
message = message.strip()
|
189 |
-
query_embedding = self.embedding_model.encode(message, convert_to_tensor=True)
|
190 |
-
query_embedding = query_embedding.to('cuda')
|
191 |
-
hits = util.semantic_search(query_embedding, corpus_embeddings, top_k=1)
|
192 |
-
hit = hits[0][0]
|
193 |
-
context = self.df['Context'][hit['corpus_id']]
|
194 |
-
Answer = self.model_pipeline(message, context)
|
195 |
-
return Answer
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
def predict_without_faiss(self,message):
|
200 |
-
MostSimilarContext = ""
|
201 |
-
min_distance = 1000
|
202 |
-
message = message.strip(' \t\n')
|
203 |
-
question_vector = self.get_embeddings([message])
|
204 |
-
question_vector=self.prepare_sentences_vector(question_vector)
|
205 |
-
for j, _question_vector in enumerate(self.vectors):
|
206 |
-
distance = euclidean_distances(question_vector, _question_vector.reshape(1, -1))[0][0]
|
207 |
-
if distance < min_distance:
|
208 |
-
min_distance = distance
|
209 |
-
MostSimilarContext = self.df['Context'][j]
|
210 |
-
similar_question = self.df['Question'][j]
|
211 |
-
if distance <= 0.02469331026:
|
212 |
-
break
|
213 |
-
predict_answer = self.model_pipeline(message, MostSimilarContext)
|
214 |
-
Answer = predict_answer.strip().replace("<unk>","@")
|
215 |
-
return Answer
|
216 |
-
|
217 |
bot = ChatbotModel()
|
218 |
|
219 |
"""#Gradio"""
|
220 |
|
221 |
|
222 |
-
|
223 |
-
|
224 |
-
# demoFaiss = gr.ChatInterface(fn=bot._chatbot.predict_faiss, examples=EXAMPLE_PATH)
|
225 |
-
# demoBert = gr.ChatInterface(fn=bot._chatbot.predict_bert_embedding,examples=EXAMPLE_PATH)
|
226 |
-
# demoSemantic = gr.ChatInterface(fn=bot._chatbot.predict_semantic_search,examples=EXAMPLE_PATH)
|
227 |
-
# demoWithoutFiss = gr.ChatInterface(fn=bot._chatbot.predict_without_faiss,examples=EXAMPLE_PATH)
|
228 |
-
demoFaiss = gr.Interface(fn=bot._chatbot.predict_faiss, inputs="text", outputs="text", title="TH wiki (just Faiss)")
|
229 |
-
demoBert = gr.Interface(fn=bot._chatbot.predict_bert_embedding, inputs="text", outputs="text", title="TH wiki (Faiss & Model)")
|
230 |
-
demoSemantic = gr.Interface(fn=bot._chatbot.predict_semantic_search, inputs="text", outputs="text", title="TH wiki (Semantic Search & Model)")
|
231 |
-
demoWithoutFiss = gr.Interface(fn=bot._chatbot.predict_without_faiss, inputs="text", outputs="text", title="TH wiki (just Model)")
|
232 |
-
|
233 |
-
demo = gr.TabbedInterface([demoFaiss, demoWithoutFiss, demoBert, demoSemantic], ["Faiss", "Model", "Faiss & Model", "Semantic Search & Model"])
|
234 |
demo.launch()
|
|
|
142 |
similar_contexts = [self.df['Context'][indices[0][i]] for i in range(self.k)]
|
143 |
return similar_questions, similar_contexts, distances, indices
|
144 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
|
146 |
+
def predict(self,message):
|
|
|
147 |
message = message.strip()
|
148 |
question_vector = self.get_embeddings(message)
|
149 |
question_vector=self.prepare_sentences_vector([question_vector])
|
|
|
151 |
Answer = self.model_pipeline(similar_questions, similar_contexts)
|
152 |
return Answer
|
153 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
bot = ChatbotModel()
|
155 |
|
156 |
"""#Gradio"""
|
157 |
|
158 |
|
159 |
+
# EXAMPLE = ["หลิน ไห่เฟิง มีชื่อเรียกอีกชื่อว่าอะไร" , "ใครเป็นผู้ตั้งสภาเศรษฐกิจโลกขึ้นในปี พ.ศ. 2514 โดยทุกปีจะมีการประชุมที่ประเทศสวิตเซอร์แลนด์", "โปรดิวเซอร์ของอัลบั้มตลอดกาล ของวงคีรีบูนคือใคร", "สกุลเดิมของหม่อมครูนุ่ม นวรัตน ณ อยุธยา คืออะไร"]
|
160 |
+
demo = gr.Interface(fn=bot._chatbot.predict, inputs="text", outputs="text", title="CE66-04_Thai Question Answering System by using Deep Learning")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
demo.launch()
|