amartyasaran's picture
;
09184b5
raw
history blame contribute delete
No virus
2.25 kB
import json
import pickle
import streamlit as st
from transformers import DPRContextEncoder, DPRContextEncoderTokenizer
from haystack.nodes import DensePassageRetriever
from haystack.nodes import FARMReader
from haystack.pipelines import ExtractiveQAPipeline
st.title("DPR on Supreme Court Judgements (Capital Gain)")
# with open("responses.json", 'r') as f:
# data = json.load(f)
# documents = [
# {
# "content": doc["text"],
# "meta": {
# "name": doc["title"],
# "url": doc["url"]
# }
# } for doc in data
# ]
# document_store = FAISSDocumentStore(embedding_dim=768, faiss_index_factory_str="Flat", sql_url="sqlite:///faiss_document_store.d")
with open("inmemory_document_store.pkl", "rb") as f:
document_store = pickle.load(f)
# document_store.write_documents(documents)
# document_store = FAISSDocumentStore.load(index_path="./faiss_index", config_path="./faiss_index.json")
retriever = DensePassageRetriever(
document_store=document_store,
query_embedding_model="facebook/dpr-question_encoder-single-nq-base",
passage_embedding_model="facebook/dpr-ctx_encoder-single-nq-base",
)
# document_store.update_embeddings(retriever)
# document_store.save(index_path="./faiss_index", config_path="./faiss_index.json")
# with open("inmemory_document_store.pkl", "wb") as f:
# pickle.dump(document_store, f)
reader = FARMReader(model_name_or_path="deepset/bert-base-cased-squad2")
pipeline = ExtractiveQAPipeline(reader=reader, retriever=retriever)
query = st.text_input("Enter your query:", "")
if query:
with st.spinner("Searching..."):
results = pipeline.run(query=query, params={"Retriever": {"top_k": 5}})
for answer in results['answers']:
st.markdown(f"=====================\nAnswer: {answer.answer}\nContext: {answer.context}\nScore: {answer.score}")
# query = st.text_input("Enter Question")
# query = "What is the subject matter of the petition in the Sadanand S. Varde case?"
# result = pipeline.run(query=query, params={"Retriever": {"top_k": 10}, "Reader": {"top_k": 5}})
# for answer in result['answers']:
# print(f"=====================\nAnswer: {answer.answer}\nContext: {answer.context}\nScore: {answer.score}")