Spaces:
Runtime error
Runtime error
| """Preset examples for metric demonstrations.""" | |
| from typing import List, Dict, Tuple | |
| class EvaluationExample: | |
| """Represents a ground truth / prediction pair example.""" | |
| def __init__(self, name: str, ground_truth: str, prediction: str, | |
| description: str = "", tags: List[str] = None): | |
| self.name = name | |
| self.ground_truth = ground_truth | |
| self.prediction = prediction | |
| self.description = description | |
| self.tags = tags or [] | |
| # Text comparison examples | |
| TEXT_EXAMPLES = [ | |
| EvaluationExample( | |
| name="Exact Match", | |
| ground_truth="The cat sat on the mat", | |
| prediction="The cat sat on the mat", | |
| description="Perfect match - all metrics should be 1.0", | |
| tags=["exact", "perfect"] | |
| ), | |
| EvaluationExample( | |
| name="Paraphrase (Synonyms)", | |
| ground_truth="The cat sat on the mat", | |
| prediction="The cat was sitting on the mat", | |
| description="Same meaning, different words - good BERT Score, lower BLEU/ROGUE", | |
| tags=["paraphrase", "semantic"] | |
| ), | |
| EvaluationExample( | |
| name="Partial Match", | |
| ground_truth="The cat sat on the mat and looked outside", | |
| prediction="The cat sat on the mat", | |
| description="Incomplete prediction - brevity penalty applies", | |
| tags=["partial", "incomplete"] | |
| ), | |
| EvaluationExample( | |
| name="Wrong Answer", | |
| ground_truth="Paris is the capital of France", | |
| prediction="Berlin is the capital of France", | |
| description="Completely wrong but similar structure", | |
| tags=["wrong", "incorrect"] | |
| ), | |
| EvaluationExample( | |
| name="Extra Content", | |
| ground_truth="The cat sat on the mat", | |
| prediction="The cat sat on the mat and then jumped off quickly", | |
| description="Extra words added - recall will suffer", | |
| tags=["extra", "verbose"] | |
| ), | |
| EvaluationExample( | |
| name="Word Order Changed", | |
| ground_truth="The cat sat on the mat", | |
| prediction="On the mat sat the cat", | |
| description="Same words, different order - ROGUE-L should handle this", | |
| tags=["reorder", "scrambled"] | |
| ), | |
| EvaluationExample( | |
| name="Long Text - Translation", | |
| ground_truth="Machine translation has revolutionized how we communicate across languages, enabling instant understanding of foreign texts.", | |
| prediction="Machine translation has changed how we communicate between languages, allowing instant comprehension of foreign texts.", | |
| description="Realistic translation scenario", | |
| tags=["translation", "long"] | |
| ), | |
| EvaluationExample( | |
| name="Summarization - Key Points", | |
| ground_truth="The research paper demonstrates that neural networks can effectively predict protein structures with high accuracy, potentially revolutionizing drug discovery and biological research.", | |
| prediction="Neural networks can predict protein structures accurately, which could transform drug discovery.", | |
| description="Abstractive summarization - ROGUE should capture key points", | |
| tags=["summarization", "abstractive"] | |
| ), | |
| ] | |
| # MRR-specific examples (question-answering format) | |
| MRR_EXAMPLES = [ | |
| { | |
| "name": "Correct at Position 1", | |
| "question": "What is the capital of France?", | |
| "ranked_answers": ["Paris", "London", "Berlin", "Madrid"], | |
| "correct_answer": "Paris", | |
| "description": "Perfect ranking - MRR = 1.0" | |
| }, | |
| { | |
| "name": "Correct at Position 2", | |
| "question": "What is the capital of France?", | |
| "ranked_answers": ["London", "Paris", "Berlin", "Madrid"], | |
| "correct_answer": "Paris", | |
| "description": "Good ranking - MRR = 0.5" | |
| }, | |
| { | |
| "name": "Correct at Position 3", | |
| "question": "What is the capital of France?", | |
| "ranked_answers": ["London", "Berlin", "Paris", "Madrid"], | |
| "correct_answer": "Paris", | |
| "description": "Average ranking - MRR = 0.33" | |
| }, | |
| { | |
| "name": "Not in Top 3", | |
| "question": "What is the capital of France?", | |
| "ranked_answers": ["London", "Berlin", "Madrid", "Paris"], | |
| "correct_answer": "Paris", | |
| "description": "Poor ranking - MRR = 0.25" | |
| }, | |
| { | |
| "name": "Multiple Questions Batch", | |
| "questions": [ | |
| {"q": "Capital of France?", "ranked": ["Paris", "London", "Berlin"], "correct": "Paris"}, | |
| {"q": "Capital of Japan?", "ranked": ["Beijing", "Tokyo", "Seoul"], "correct": "Tokyo"}, | |
| {"q": "Capital of UK?", "ranked": ["London", "Paris", "Berlin"], "correct": "London"}, | |
| ], | |
| "description": "Batch evaluation - calculates mean across multiple questions" | |
| } | |
| ] | |
| def get_text_example_names() -> List[str]: | |
| """Get list of available text example names.""" | |
| return [ex.name for ex in TEXT_EXAMPLES] | |
| def get_text_example(name: str) -> EvaluationExample: | |
| """Get a specific text example by name. | |
| Args: | |
| name: Example name | |
| Returns: | |
| EvaluationExample object | |
| """ | |
| for ex in TEXT_EXAMPLES: | |
| if ex.name == name: | |
| return ex | |
| return TEXT_EXAMPLES[0] | |
| def get_mrr_example_names() -> List[str]: | |
| """Get list of available MRR example names.""" | |
| return [ex["name"] for ex in MRR_EXAMPLES] | |
| def get_mrr_example(name: str) -> Dict: | |
| """Get a specific MRR example by name.""" | |
| for ex in MRR_EXAMPLES: | |
| if ex["name"] == name: | |
| return ex | |
| return MRR_EXAMPLES[0] | |