enesmanan commited on
Commit
5a8b19d
·
verified ·
1 Parent(s): f6d39c8

Upload 4 files

Browse files
Files changed (2) hide show
  1. app.py +17 -6
  2. scripts/review_summarizer.py +26 -11
app.py CHANGED
@@ -62,27 +62,38 @@ class ReviewAnalysisApp:
62
  try:
63
  setup_chrome() # Uygulama başlatılırken Chrome'u kur
64
  self.analyzer = ReviewAnalyzer()
 
65
  except Exception as e:
66
- print(f"Uygulama başlatılırken hata: {str(e)}")
 
 
67
 
68
  def analyze_url(self, url):
69
  try:
 
 
 
 
 
70
  if not url or not url.startswith("https://www.trendyol.com/"):
71
  return "Lütfen geçerli bir Trendyol ürün yorumları URL'si girin.", None, None, None
72
 
73
- print("Yorumlar çekiliyor...")
74
  df = scrape_reviews(url)
75
 
76
  if df.empty:
77
  return "Yorumlar çekilemedi. Lütfen URL'yi kontrol edin.", None, None, None
78
 
79
- print("Sentiment analizi yapılıyor...")
80
  analyzed_df = self.analyzer.analyze_reviews(df)
81
 
82
- print("Özet oluşturuluyor...")
 
 
 
83
  summary = self.analyzer.generate_summary(analyzed_df)
84
 
85
- print("Grafikler oluşturuluyor...")
86
  fig1 = self.create_sentiment_distribution(analyzed_df)
87
  fig2 = self.create_rating_distribution(analyzed_df)
88
  fig3 = self.create_sentiment_by_rating(analyzed_df)
@@ -91,7 +102,7 @@ class ReviewAnalysisApp:
91
 
92
  except Exception as e:
93
  error_msg = f"Analiz sırasında hata oluştu: {str(e)}"
94
- print(error_msg)
95
  return error_msg, None, None, None
96
 
97
  def create_sentiment_distribution(self, df):
 
62
  try:
63
  setup_chrome() # Uygulama başlatılırken Chrome'u kur
64
  self.analyzer = ReviewAnalyzer()
65
+ logger.info("ReviewAnalyzer başarıyla başlatıldı")
66
  except Exception as e:
67
+ logger.error(f"ReviewAnalyzer başlatılırken hata: {str(e)}")
68
+ # Hata durumunda da analyzer'ı oluştur
69
+ self.analyzer = None
70
 
71
  def analyze_url(self, url):
72
  try:
73
+ # Analyzer'ın başarıyla başlatılıp başlatılmadığını kontrol et
74
+ if self.analyzer is None:
75
+ logger.error("Analyzer başlatılamadı")
76
+ return "Sistem başlatılamadı. Lütfen daha sonra tekrar deneyin.", None, None, None
77
+
78
  if not url or not url.startswith("https://www.trendyol.com/"):
79
  return "Lütfen geçerli bir Trendyol ürün yorumları URL'si girin.", None, None, None
80
 
81
+ logger.info("Yorumlar çekiliyor...")
82
  df = scrape_reviews(url)
83
 
84
  if df.empty:
85
  return "Yorumlar çekilemedi. Lütfen URL'yi kontrol edin.", None, None, None
86
 
87
+ logger.info("Sentiment analizi yapılıyor...")
88
  analyzed_df = self.analyzer.analyze_reviews(df)
89
 
90
+ if analyzed_df.empty:
91
+ return "Sentiment analizi yapılamadı.", None, None, None
92
+
93
+ logger.info("Özet oluşturuluyor...")
94
  summary = self.analyzer.generate_summary(analyzed_df)
95
 
96
+ logger.info("Grafikler oluşturuluyor...")
97
  fig1 = self.create_sentiment_distribution(analyzed_df)
98
  fig2 = self.create_rating_distribution(analyzed_df)
99
  fig3 = self.create_sentiment_by_rating(analyzed_df)
 
102
 
103
  except Exception as e:
104
  error_msg = f"Analiz sırasında hata oluştu: {str(e)}"
105
+ logger.error(error_msg)
106
  return error_msg, None, None, None
107
 
108
  def create_sentiment_distribution(self, df):
scripts/review_summarizer.py CHANGED
@@ -14,6 +14,7 @@ import nltk
14
  import re
15
  import google.generativeai as genai
16
  from dotenv import load_dotenv
 
17
 
18
  warnings.filterwarnings('ignore')
19
 
@@ -24,19 +25,33 @@ try:
24
  except:
25
  print("NLTK dosyaları indirilemedi, devam ediliyor...")
26
 
 
 
27
  class ReviewAnalyzer:
28
  def __init__(self):
29
- # Load environment variables
30
- load_dotenv()
31
-
32
- # Configure Gemini API
33
- genai.configure(api_key=os.getenv('GOOGLE_API_KEY'))
34
- self.model = genai.GenerativeModel('gemini-pro')
35
-
36
- # Diğer model kurulumları (sentiment analizi için)
37
- self.setup_sentiment_model()
38
-
39
- self.turkish_stopwords = self.get_turkish_stopwords()
 
 
 
 
 
 
 
 
 
 
 
 
40
 
41
  # Lojistik ve satıcı ile ilgili kelimeleri tanımla
42
  self.logistics_seller_words = {
 
14
  import re
15
  import google.generativeai as genai
16
  from dotenv import load_dotenv
17
+ import logging
18
 
19
  warnings.filterwarnings('ignore')
20
 
 
25
  except:
26
  print("NLTK dosyaları indirilemedi, devam ediliyor...")
27
 
28
+ logger = logging.getLogger(__name__)
29
+
30
  class ReviewAnalyzer:
31
  def __init__(self):
32
+ try:
33
+ # Load environment variables
34
+ load_dotenv()
35
+
36
+ # Configure Gemini API
37
+ api_key = os.getenv('GOOGLE_API_KEY')
38
+ if not api_key:
39
+ raise ValueError("GOOGLE_API_KEY bulunamadı")
40
+
41
+ genai.configure(api_key=api_key)
42
+ self.model = genai.GenerativeModel('gemini-pro')
43
+
44
+ # Sentiment model kurulumu
45
+ self.setup_sentiment_model()
46
+
47
+ # Stop words yükleme
48
+ self.turkish_stopwords = self.get_turkish_stopwords()
49
+
50
+ logger.info("ReviewAnalyzer başarıyla başlatıldı")
51
+
52
+ except Exception as e:
53
+ logger.error(f"ReviewAnalyzer başlatılırken hata: {str(e)}")
54
+ raise
55
 
56
  # Lojistik ve satıcı ile ilgili kelimeleri tanımla
57
  self.logistics_seller_words = {