mohamedbmt commited on
Commit
b72c02f
Β·
1 Parent(s): 879db00

version 2 of ui

Browse files
Files changed (1) hide show
  1. app.py +18 -26
app.py CHANGED
@@ -1,51 +1,43 @@
1
  import streamlit as st
2
- from transformers import AutoModelForSequenceClassification, AutoTokenizer, pipeline
3
  from peft import PeftModel
4
  import torch
5
-
6
- # Load model and tokenizer with adapter
7
  @st.cache_resource
8
  def load_model():
9
  base_model = "Qwen/Qwen3-0.6B"
10
  adapter_path = "faizabenatmane/Qwen-3-0.6B"
11
 
12
  tokenizer = AutoTokenizer.from_pretrained(base_model)
13
-
14
- base = AutoModelForSequenceClassification.from_pretrained(
15
- base_model,
16
- num_labels=2,
17
- device_map="cpu"
18
- )
19
 
20
  model = PeftModel.from_pretrained(base, adapter_path)
21
  model = model.merge_and_unload()
22
 
23
- # βœ… Text classification pipeline
24
- pipe = pipeline("text-classification", model=model, tokenizer=tokenizer)
25
  return pipe
26
 
27
- # Load pipeline once
28
- classifier = load_model()
29
 
30
- # Streamlit UI
31
- st.title("πŸ“° Fake News Detection")
32
  text = st.text_area("Enter a news statement or claim:", height=200)
33
 
34
  if st.button("Check"):
35
  with st.spinner("Analyzing..."):
36
- # Get classification result
37
- result = classifier(text)[0]
38
- label = result['label']
39
- score = result['score']
40
 
41
- # Optional: format label nicely
42
- if "1" in label or "POSITIVE" in label.upper():
43
- verdict = "Real"
44
  emoji = "βœ…"
45
- else:
46
- verdict = "Fake"
47
  emoji = "❌"
 
 
 
 
48
 
49
- # Show result
50
  st.subheader("Prediction")
51
- st.success(f"{emoji} The statement is likely: **{verdict}** (confidence: {score:.2f})")
 
1
  import streamlit as st
2
+ from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
3
  from peft import PeftModel
4
  import torch
5
+ # Load model and tokenizer with adapter
 
6
  @st.cache_resource
7
  def load_model():
8
  base_model = "Qwen/Qwen3-0.6B"
9
  adapter_path = "faizabenatmane/Qwen-3-0.6B"
10
 
11
  tokenizer = AutoTokenizer.from_pretrained(base_model)
12
+ base = AutoModelForCausalLM.from_pretrained(base_model, torch_dtype=torch.float16, device_map="auto")
 
 
 
 
 
13
 
14
  model = PeftModel.from_pretrained(base, adapter_path)
15
  model = model.merge_and_unload()
16
 
17
+ pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
 
18
  return pipe
19
 
20
+ generator = load_model()
 
21
 
22
+ # Streamlit UI
23
+ st.title("πŸ“° Fake News Detection (Text Generation)")
24
  text = st.text_area("Enter a news statement or claim:", height=200)
25
 
26
  if st.button("Check"):
27
  with st.spinner("Analyzing..."):
28
+ prompt = f"Is the following statement real or fake?\n\n{text}\n\nAnswer:"
29
+ output = generator(prompt, max_length=50, do_sample=False)[0]['generated_text']
30
+ answer = output.split("Answer:")[-1].strip().split()[0].lower()
 
31
 
32
+ if "real" in answer:
 
 
33
  emoji = "βœ…"
34
+ verdict = "Real"
35
+ elif "fake" in answer:
36
  emoji = "❌"
37
+ verdict = "Fake"
38
+ else:
39
+ emoji = "πŸ€”"
40
+ verdict = f"Unclear: {answer}"
41
 
 
42
  st.subheader("Prediction")
43
+ st.success(f"{emoji} The statement is likely: **{verdict}**")