Files
Source/HUGGINGFACE/ai_news.py
T

62 lines
2.0 KiB
Python

import gradio as gr
from transformers import pipeline
# 요약
summarizer = pipeline("summarization")
# 감성분석
classifier = pipeline("sentiment-analysis")
# 개체명인식(NER)
ner = pipeline("ner", grouped_entities=True)
# 변역
translator = pipeline("translation_en_to_ko", model="facebook/m2m100_418M")
def analyze_news(article):
if not article:
return "", "", "", ""
# 1. 뉴스 요약
summary_result = summarizer(article)
summary = summary_result[0]['summary_text']
# 2. 감성분석(뉴스원문)
sentiment_result = classifier(article)
sentiment = (
f"감성 : {sentiment_result[0]['label']}"
f"score : {sentiment_result[0]['score']:.4f}"
)
# 3. 키워드 추철
ner_result = ner(article)
keywords = []
for item in ner_result:
word = item['word']
if word not in keywords:
keywords.append(word)
# 리스트 -> 문자열
keyword_text = ", ".join(keywords)
# 4. 번역
translation_result = translator(summary)
translator_summary = translation_result[0]['translation_text']
return summary, sentiment, keyword_text, translator_summary
with gr.Blocks(title="AI 뉴스 분석기") as demo:
gr.Markdown("## AI 뉴스 분석기")
with gr.Row():
with gr.Column(scale=2):
article_input = gr.Textbox(label = "영문 뉴스 기사 입력", lines=15, placeholder="영문 뉴스 기사를 입력하세요..",)
analyze_btn = gr.Button("뉴스 분석 시작")
with gr.Column(scale=2):
summary_output = gr.Textbox(label = "뉴스 요약", lines = 5)
sentiment_output = gr.Textbox(label = "감성 분석")
keyword_output = gr.Textbox(label = "키워드 추출")
translation_output = gr.Textbox(label = "한국어 번역 ", lines= 5)
analyze_btn.click(fn = analyze_news, inputs=article_input, outputs=[summary_output, sentiment_output, keyword_output, translation_output])
demo.launch()