douglasfaisal's picture
Display a list of retrieved and reranked results
45d5210
# This is a sample Python script.
# Press Shift+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
import gradio as gr
import os
import pandas as pd
from reranker.reranker import CrossEncReranker
from retriever.es_retriever import ESRetriever
from utils.preprocessing import question_to_statement
ES_HOST = os.environ["ES_HOST"]
ES_INDEX_NAME = os.environ["ES_INDEX_NAME"]
ES_USERNAME = os.environ["ES_USERNAME"]
ES_PASSWORD = os.environ["ES_PASSWORD"]
RERANKER_MODEL_NAME = "douglasfaisal/granularity-legal-reranker-cross-encoder-indobert-base-p2"
es_retriever_client = ESRetriever(ES_HOST, ES_INDEX_NAME, ES_USERNAME, ES_PASSWORD)
cross_enc_reranker = CrossEncReranker(RERANKER_MODEL_NAME, 512)
def retrieve_and_rerank(question: str, example: str):
if (question == None or question == ""):
question = example
query = question_to_statement(question)
try:
retrieval_results = es_retriever_client.retrieve(query)
reranker_results = cross_enc_reranker.rerank(query, retrieval_results)
law_refs = [i.generate_string() for i in reranker_results]
law_texts = [i.text for i in reranker_results]
df = pd.DataFrame({
'Rank': range(1, len(law_refs)+1),
'Reference': law_refs,
'Text': law_texts
})
return reranker_results[0].generate_string(), reranker_results[0].text, df
except:
return "-", "(Result Not Found)"
with gr.Blocks() as demo:
with gr.Row():
text_input = gr.Textbox()
demo = gr.Interface(
fn=retrieve_and_rerank,
inputs=[
"text",
gr.Dropdown(
[
"Apa yang dimaksud dengan pemberi kerja?",
"Berapa paling lama waktu kerja lembur?",
"Apa bentuk pendapatan non-upah?"
]
)
],
outputs=[
"label",
"text",
"dataframe"
])
if __name__ == "__main__":
demo.launch()