54 lines
2.1 KiB
Python
54 lines
2.1 KiB
Python
|
import gradio as gr
|
||
|
from transformers import pipeline
|
||
|
from gradio.themes.utils import sizes
|
||
|
|
||
|
|
||
|
theme = gr.themes.Default(radius_size=sizes.radius_none).set(
|
||
|
block_label_text_color = '#4D63FF',
|
||
|
block_title_text_color = '#4D63FF',
|
||
|
button_primary_text_color = '#4D63FF',
|
||
|
button_primary_background_fill='#FFFFFF',
|
||
|
button_primary_border_color='#4D63FF',
|
||
|
button_primary_background_fill_hover='#EDEFFF',
|
||
|
)
|
||
|
|
||
|
|
||
|
sentimentPipeline = pipeline("zero-shot-classification", model="valhalla/distilbart-mnli-12-1")
|
||
|
|
||
|
def sentiment_analysis(text, labels):
|
||
|
candidate_labels = labels.split(',')
|
||
|
results = sentimentPipeline(text, candidate_labels)
|
||
|
|
||
|
total_results = ""
|
||
|
index = 0
|
||
|
|
||
|
for candidate_label in candidate_labels:
|
||
|
total_results += f"Sentiment: {results.get('labels')[index]}, Score: {results.get('scores')[index]}"
|
||
|
total_results += '\r\n'
|
||
|
index += 1
|
||
|
|
||
|
return total_results
|
||
|
|
||
|
with gr.Blocks(theme=theme, css="footer {visibility: hidden}") as demo:
|
||
|
gr.Markdown("""
|
||
|
<div align='center' ><font size='60'>文本情感分析</font></div>
|
||
|
""")
|
||
|
with gr.Row():
|
||
|
with gr.Column():
|
||
|
text = gr.Textbox(label="文本")
|
||
|
label = gr.Textbox(label="标签")
|
||
|
with gr.Row():
|
||
|
button = gr.Button("提交", variant="primary")
|
||
|
clear = gr.Button("清除", variant="primary")
|
||
|
box2 = gr.Textbox(label="文本")
|
||
|
|
||
|
button.click(fn=sentiment_analysis, inputs=[text, label], outputs=box2)
|
||
|
clear.click(lambda x: gr.update(value=''), [], [text])
|
||
|
clear.click(lambda x: gr.update(value=''), [], [label])
|
||
|
examples = gr.Examples(examples=[['I have a problem with my iphone that needs to be resolved asap!!', 'urgent, not urgent, phone, tablet, computer'], ['Last week I upgraded my iOS version and ever since then my phone has been overheating whenever I use your app.', 'mobile, website, billing, account access']], inputs=[text, label], label="例子")
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
demo.queue(concurrency_count=3)
|
||
|
demo.launch(server_name = "0.0.0.0", server_port = 7028)
|