File size: 1,671 Bytes
4796377
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 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)
        }