news_discussion / app.py
Shiiirley's picture
Upload 2 files
376870b verified
raw
history blame contribute delete
No virus
3.08 kB
import streamlit as st
text = st.text_input('Your news is: ', max_chars=200, help='maximum 200 words')
# Load model directly
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import numpy as np
tokenizer = AutoTokenizer.from_pretrained("Shiiirley/fake_news_detector")
model = AutoModelForSequenceClassification.from_pretrained("Shiiirley/fake_news_detector")
# 第一步,用户输入新闻
# text = "May 20, 2024 - politicsNews - Donald Trump is eating taco at HKUST right now, he is satisfied with the food and would like to come again. He was especially happy about the taco sauce, but thought it would taste better if it had pickles mixed with No. 46 concrete. He also suggested that if Australians want to deal with kangaroos' military attack on their country, they can each be given a taco newly developed by HKUST. The purple moonbeams danced on the sparkling waves, as the giggling unicorns pranced through the fields of cotton candy, while the rainbow-colored butterflies fluttered their wings in delight."
inputs = tokenizer(text,
padding = True,
truncation = True,
return_tensors='pt')
outputs = model(**inputs)
predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
predictions = predictions.cpu().detach().numpy()
print(f"The predicted class is {np.argmax(predictions)}")
print(f"Class 0={predictions[0,0]:.4f}, Class 1={predictions[0,1]:.4f}")
judge = "real"
if predictions[0,0] >= 0.4:
judge = "fake"
readout = "This news is probably a "+ judge + f" one. The fake probability is {100*predictions[0,0]:.4f}%."
from transformers import AutoModelWithLMHead, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("mrm8488/t5-base-finetuned-summarize-news",use_fast=False)
model = AutoModelWithLMHead.from_pretrained("mrm8488/t5-base-finetuned-summarize-news")
def summarize(text, max_length=150):
input_ids = tokenizer.encode(text, return_tensors="pt", add_special_tokens=True)
generated_ids = model.generate(input_ids=input_ids, num_beams=2, max_length=max_length, repetition_penalty=2.5, length_penalty=1.0, early_stopping=True)
preds = [tokenizer.decode(g, skip_special_tokens=True, clean_up_tokenization_spaces=True) for g in generated_ids]
return preds[0]
summary = summarize(text,max_length=80)
readout = readout + " The following is a brief summary of it: "+ summary
from transformers import VitsModel, AutoTokenizer
import torch
model = VitsModel.from_pretrained("facebook/mms-tts-eng")
tokenizer = AutoTokenizer.from_pretrained("facebook/mms-tts-eng")
inputs = tokenizer(readout, return_tensors="pt")
with torch.no_grad():
output = model(**inputs).waveform
import scipy
scipy.io.wavfile.write("readout.wav", rate=model.config.sampling_rate, data=output.float().numpy().T)
# 打开音频文件
audio_file = open('readout.wav', 'rb')
audio_bytes = audio_file.read()
# 使用st.audio函数播放音频
st.audio(audio_bytes, format='audio/wav')
st.text("Your input is: "+text+" ; Our discussion: "+readout)