mnurbani commited on
Commit
d1163f7
·
verified ·
1 Parent(s): 8f84b2a

Upload app.py.py

Browse files
Files changed (1) hide show
  1. app.py.py +70 -0
app.py.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py
2
+
3
+ import streamlit as st
4
+ from langchain.llms import Ollama
5
+ from langchain.prompts import PromptTemplate
6
+ from langchain.chains import LLMChain
7
+ from textblob import TextBlob
8
+ from dotenv import load_dotenv
9
+
10
+ load_dotenv()
11
+
12
+ def load_model():
13
+ model = Ollama(model='llama3.1:latest', temperature=0.2)
14
+ return model
15
+
16
+ def summarize_prompt():
17
+ return PromptTemplate(
18
+ input_variables=["email"],
19
+ template=(
20
+ """
21
+ 1. Berdasarkan teks berikut, buat ringkasan singkat tentang tindakan utama yang dilakukan oleh user, ambil no resi pada text dalam format berikut:
22
+ [Aksi User]
23
+
24
+ 2. Berikan juga analisis sentimen percakapan user dengan salah satu label:
25
+ - Positif
26
+ - Negatif
27
+ - Netral
28
+
29
+ Teks:
30
+ {email}
31
+
32
+ Ringkasan:
33
+ Aksi User: [Deskripsikan tindakan utama user berdasarkan teks]
34
+ Sentimen: [Tentukan sentimen berdasarkan nada dan konteks teks]
35
+ """
36
+ )
37
+ )
38
+
39
+ def simple_sentiment_analysis(text):
40
+ blob = TextBlob(text)
41
+ sentiment = blob.sentiment.polarity
42
+ if sentiment > 0:
43
+ return "Positif"
44
+ elif sentiment < 0:
45
+ return "Negatif"
46
+ else:
47
+ return "Netral"
48
+
49
+ model = load_model()
50
+ prompt = summarize_prompt()
51
+ llm_chain = LLMChain(llm=model, prompt=prompt)
52
+
53
+ def analyze_email(email):
54
+ result = llm_chain.run(email=email)
55
+ sentiment = simple_sentiment_analysis(email)
56
+ return result + f"\nSentimen Percakapan: {sentiment}"
57
+
58
+ # Streamlit UI
59
+ st.title("Sentiment Analysis and User Action Summarizer")
60
+ st.write("Enter an email or text below to analyze the user's action and sentiment:")
61
+
62
+ user_input = st.text_area("Email/Text Input", "", height=200)
63
+
64
+ if st.button("Analyze"):
65
+ if user_input:
66
+ analysis_result = analyze_email(user_input)
67
+ st.subheader("Analysis Result:")
68
+ st.text(analysis_result)
69
+ else:
70
+ st.warning("Please enter some text to analyze.")