COS30081_FNLP_DHD / process.py
veronhii's picture
update
b503af5
Raw
History Blame Contribute Delete
1.59 kB
from initial import *
def document_retriever(question):
"""
Retrieve relevant documents (contexts) for a given question.
Args:
- question (str): The question to retrieve documents for.
Returns:
- top_docs (list): List of dictionaries containing top relevant documents.
"""
# Preprocess the question
preprocessed_question = [tfidf_preprocess(question)]
question_vector = tfidf_vectorizer.transform(preprocessed_question)
# Calculate similarity scores
score = cosine_similarity(tfidf_matrix, question_vector)
# Get the top 5 relevant documents (contexts)
top_5_indices = score.flatten().argsort()[-5:][::-1]
top_5_scores = score.flatten()[top_5_indices]
top_docs = []
for i, idx in enumerate(top_5_indices):
top_docs.append(
{
"title": document_context[idx],
"context": contexts[idx],
"score": top_5_scores[i],
}
)
return top_docs
def load_model(model_name):
"""
Load a pre-trained question answering model.
Args:
- model_name (str): The name of the model to load.
Returns:
- qa_pipeline: Question answering pipeline with the loaded model.
"""
if model_name in MODEL_NAME:
model = AutoModelForQuestionAnswering.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
qa_pipeline = pipeline("question-answering", model=model, tokenizer=tokenizer)
return qa_pipeline
else:
raise ValueError(f"Model {model_name} not found")