|
|
|
|
| import streamlit as st
|
| from langchain.llms import Ollama
|
| from langchain.prompts import PromptTemplate
|
| from langchain.chains import LLMChain
|
| from textblob import TextBlob
|
| from dotenv import load_dotenv
|
|
|
| load_dotenv()
|
|
|
| def load_model():
|
| model = Ollama(model='llama3.1:latest', temperature=0.2)
|
| return model
|
|
|
| def summarize_prompt():
|
| return PromptTemplate(
|
| input_variables=["email"],
|
| template=(
|
| """
|
| 1. Berdasarkan teks berikut, buat ringkasan singkat tentang tindakan utama yang dilakukan oleh user, ambil no resi pada text dalam format berikut:
|
| [Aksi User]
|
|
|
| 2. Berikan juga analisis sentimen percakapan user dengan salah satu label:
|
| - Positif
|
| - Negatif
|
| - Netral
|
|
|
| Teks:
|
| {email}
|
|
|
| Ringkasan:
|
| Aksi User: [Deskripsikan tindakan utama user berdasarkan teks]
|
| Sentimen: [Tentukan sentimen berdasarkan nada dan konteks teks]
|
| """
|
| )
|
| )
|
|
|
| def simple_sentiment_analysis(text):
|
| blob = TextBlob(text)
|
| sentiment = blob.sentiment.polarity
|
| if sentiment > 0:
|
| return "Positif"
|
| elif sentiment < 0:
|
| return "Negatif"
|
| else:
|
| return "Netral"
|
|
|
| model = load_model()
|
| prompt = summarize_prompt()
|
| llm_chain = LLMChain(llm=model, prompt=prompt)
|
|
|
| def analyze_email(email):
|
| result = llm_chain.run(email=email)
|
| sentiment = simple_sentiment_analysis(email)
|
| return result + f"\nSentimen Percakapan: {sentiment}"
|
|
|
|
|
| st.title("Sentiment Analysis and User Action Summarizer")
|
| st.write("Enter an email or text below to analyze the user's action and sentiment:")
|
|
|
| user_input = st.text_area("Email/Text Input", "", height=200)
|
|
|
| if st.button("Analyze"):
|
| if user_input:
|
| analysis_result = analyze_email(user_input)
|
| st.subheader("Analysis Result:")
|
| st.text(analysis_result)
|
| else:
|
| st.warning("Please enter some text to analyze.")
|
|
|