File size: 1,943 Bytes
19782f6
5e7487b
5ed6f8f
921635e
 
5ed6f8f
921635e
84c1843
70579dd
 
84c1843
19782f6
 
 
 
 
921635e
84c1843
badce84
921635e
19782f6
 
921635e
84c1843
 
19782f6
 
 
 
 
84c1843
19782f6
 
921635e
19782f6
921635e
 
19782f6
 
 
 
 
 
 
 
 
 
 
 
 
32acc67
 
19782f6
921635e
19782f6
 
32acc67
 
 
 
 
 
 
19782f6
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import gradio as gr
import os
import sys

sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from api.predict import predict_review, models_loaded

def analyze_review(reviewText):
    from api.predict import models_loaded
    
    if not reviewText or len(reviewText.strip()) == 0:
        return "error: please enter some text"
    
    if not models_loaded:
        return "models are loading for the first time, this will take 20-30 minutes. please wait..."
    
    try:
        result = predict_review(reviewText)
        print(f"raw result: {result}", flush=True)
        
        if "error" in result and result["prediction"] == "error":
            return f"error: {result['error']}"
        
        output = f"""prediction: {result['prediction']}
confidence: {result['confidence']:.2%}

fake probability: {result['fake_probability']:.2%}
genuine probability: {result['genuine_probability']:.2%}

model agreement: {result['model_agreement']:.1f}%
is fake: {result['is_fake']}
length category: {result['length_category']}
token count: {result['token_count']}"""
        
        return output
        
    except Exception as e:
        return f"error: {str(e)}"

demo = gr.Interface(
    fn=analyze_review,
    inputs=gr.Textbox(
        lines=5,
        placeholder="paste review text here...",
        label="review text"
    ),
    outputs=gr.Textbox(
        lines=10,
        label="analysis"
    ),
    title="review classifier",
    description="ensemble model for detecting fake reviews"
)

if __name__ == "__main__":
    print("starting gradio interface", flush=True)
    print("preloading models...", flush=True)
    try:
        from api.predict import loadResources
        loadResources()
        print("models preloaded successfully", flush=True)
    except Exception as e:
        print(f"error preloading models: {str(e)}", flush=True)
    demo.launch(server_name="0.0.0.0", server_port=7860)