Spaces:
Runtime error
Runtime error
# models/property_relation.py | |
from .model_loader import load_model | |
from .logging_config import logger | |
def check_if_property_related(text): | |
try: | |
# Validate input | |
if not isinstance(text, str): | |
logger.warning(f"Input to check_if_property_related is not a string: {type(text)}") | |
text = str(text) if text is not None else "" | |
if not text.strip(): | |
logger.warning("Empty text provided to check_if_property_related.") | |
return { | |
'is_related': False, | |
'confidence': 0.0, | |
'error': 'No text provided' | |
} | |
classifier = load_model("zero-shot-classification", "typeform/mobilebert-uncased-mnli") | |
result = classifier(text[:1000], ["property-related", "non-property-related"]) | |
# Defensive: ensure result structure | |
labels = result.get('labels', []) | |
scores = result.get('scores', []) | |
if not labels or not scores or len(labels) != 2 or len(scores) != 2: | |
logger.error(f"Unexpected model output in check_if_property_related: {result}") | |
return { | |
'is_related': False, | |
'confidence': 0.0, | |
'error': 'Model output error' | |
} | |
is_related = labels[0] == "property-related" | |
return { | |
'is_related': is_related, | |
'confidence': float(scores[0]) if is_related else float(scores[1]) | |
} | |
except Exception as e: | |
logger.error(f"Error checking property relation: {str(e)}") | |
return { | |
'is_related': False, | |
'confidence': 0.0, | |
'error': str(e) | |
} | |