Hyma7 commited on
Commit
8dc7a1c
·
verified ·
1 Parent(s): e28d050

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -3
app.py CHANGED
@@ -63,11 +63,19 @@ def rerank(retrieved_docs, query, corpus, top_k=5):
63
 
64
  reranked_indices = np.argsort(scores)[::-1][:top_k]
65
  reranked_docs = [retrieved_docs[idx] for idx in reranked_indices]
66
- return reranked_docs
 
 
 
 
 
 
 
 
67
 
68
  # Streamlit main function
69
  def main():
70
- st.title("Multi-Stage Retrieval Pipeline")
71
 
72
  st.write("Loading the dataset...")
73
  corpus, queries, qrels = load_dataset()
@@ -83,13 +91,21 @@ def main():
83
  retrieved_docs = candidate_retrieval(user_query, corpus, top_k=10)
84
 
85
  st.write("Running Reranking...")
86
- reranked_docs = rerank(retrieved_docs, user_query, corpus, top_k=5)
87
 
88
  st.write("Top Reranked Documents:")
89
  for doc_id in reranked_docs:
90
  st.write(f"Document ID: {doc_id}")
91
  st.write(f"Document Text: {corpus[doc_id]['text'][:500]}...") # Show the first 500 characters of the document
92
 
 
 
 
 
 
 
 
 
93
  st.write("Query executed successfully!")
94
 
95
  if __name__ == "__main__":
 
63
 
64
  reranked_indices = np.argsort(scores)[::-1][:top_k]
65
  reranked_docs = [retrieved_docs[idx] for idx in reranked_indices]
66
+ return reranked_docs, scores
67
+
68
+ # Function to evaluate using NDCG@10
69
+ def evaluate_ndcg(reranked_docs, qrels, query_id, k=10):
70
+ true_relevance = [qrels.get((query_id, doc_id), 0) for doc_id in reranked_docs]
71
+ ideal_relevance = sorted(true_relevance, reverse=True)
72
+
73
+ # NDCG expects input as 2D arrays
74
+ return ndcg_score([ideal_relevance], [true_relevance], k=k)
75
 
76
  # Streamlit main function
77
  def main():
78
+ st.title("Multi-Stage Retrieval Pipeline with Evaluation")
79
 
80
  st.write("Loading the dataset...")
81
  corpus, queries, qrels = load_dataset()
 
91
  retrieved_docs = candidate_retrieval(user_query, corpus, top_k=10)
92
 
93
  st.write("Running Reranking...")
94
+ reranked_docs, rerank_scores = rerank(retrieved_docs, user_query, corpus, top_k=5)
95
 
96
  st.write("Top Reranked Documents:")
97
  for doc_id in reranked_docs:
98
  st.write(f"Document ID: {doc_id}")
99
  st.write(f"Document Text: {corpus[doc_id]['text'][:500]}...") # Show the first 500 characters of the document
100
 
101
+ # Evaluation if the user query exists in the qrels (ground truth relevance labels)
102
+ query_id = list(queries.keys())[0] # Dummy query ID for now
103
+ if query_id in queries:
104
+ ndcg_score_value = evaluate_ndcg(reranked_docs, qrels, query_id, k=10)
105
+ st.write(f"NDCG@10 Score: {ndcg_score_value}")
106
+ else:
107
+ st.write("No ground truth available for this query.")
108
+
109
  st.write("Query executed successfully!")
110
 
111
  if __name__ == "__main__":