Upload 5 files
Browse files- app.py +41 -14
- scripts/review_summarizer.py +20 -10
app.py
CHANGED
@@ -6,29 +6,56 @@ import plotly.express as px
|
|
6 |
import plotly.graph_objects as go
|
7 |
import os
|
8 |
import subprocess
|
|
|
|
|
|
|
|
|
|
|
9 |
|
10 |
def setup_chrome():
|
11 |
"""Chrome ve ChromeDriver kurulumu"""
|
12 |
try:
|
13 |
-
# Chrome kurulumu
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
# ChromeDriver kurulumu
|
22 |
chrome_version = subprocess.check_output(['google-chrome', '--version']).decode().strip().split()[2].split('.')[0]
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
except Exception as e:
|
31 |
-
|
|
|
32 |
|
33 |
class ReviewAnalysisApp:
|
34 |
def __init__(self):
|
|
|
6 |
import plotly.graph_objects as go
|
7 |
import os
|
8 |
import subprocess
|
9 |
+
import logging
|
10 |
+
|
11 |
+
# Logging ayarları
|
12 |
+
logging.basicConfig(level=logging.INFO)
|
13 |
+
logger = logging.getLogger(__name__)
|
14 |
|
15 |
def setup_chrome():
|
16 |
"""Chrome ve ChromeDriver kurulumu"""
|
17 |
try:
|
18 |
+
# Chrome kurulumu komutları
|
19 |
+
commands = [
|
20 |
+
'apt-get update',
|
21 |
+
'apt-get install -y wget unzip',
|
22 |
+
'wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -',
|
23 |
+
'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list',
|
24 |
+
'apt-get update',
|
25 |
+
'apt-get install -y google-chrome-stable'
|
26 |
+
]
|
27 |
+
|
28 |
+
for cmd in commands:
|
29 |
+
logger.info(f"Executing: {cmd}")
|
30 |
+
result = os.system(cmd)
|
31 |
+
if result != 0:
|
32 |
+
logger.error(f"Command failed: {cmd}")
|
33 |
+
raise Exception(f"Command failed: {cmd}")
|
34 |
|
35 |
# ChromeDriver kurulumu
|
36 |
chrome_version = subprocess.check_output(['google-chrome', '--version']).decode().strip().split()[2].split('.')[0]
|
37 |
+
logger.info(f"Detected Chrome version: {chrome_version}")
|
38 |
+
|
39 |
+
driver_commands = [
|
40 |
+
f'wget -q "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_{chrome_version}" -O chrome_version',
|
41 |
+
f'wget -q "https://chromedriver.storage.googleapis.com/$(cat chrome_version)/chromedriver_linux64.zip"',
|
42 |
+
'unzip chromedriver_linux64.zip',
|
43 |
+
'mv chromedriver /usr/local/bin/',
|
44 |
+
'chmod +x /usr/local/bin/chromedriver'
|
45 |
+
]
|
46 |
+
|
47 |
+
for cmd in driver_commands:
|
48 |
+
logger.info(f"Executing: {cmd}")
|
49 |
+
result = os.system(cmd)
|
50 |
+
if result != 0:
|
51 |
+
logger.error(f"Command failed: {cmd}")
|
52 |
+
raise Exception(f"Command failed: {cmd}")
|
53 |
+
|
54 |
+
logger.info("Chrome ve ChromeDriver başarıyla kuruldu!")
|
55 |
|
56 |
except Exception as e:
|
57 |
+
logger.error(f"Chrome kurulumunda hata: {str(e)}")
|
58 |
+
raise
|
59 |
|
60 |
class ReviewAnalysisApp:
|
61 |
def __init__(self):
|
scripts/review_summarizer.py
CHANGED
@@ -1,11 +1,8 @@
|
|
1 |
import pandas as pd
|
2 |
import numpy as np
|
3 |
-
import matplotlib.pyplot as plt
|
4 |
-
import seaborn as sns
|
5 |
from transformers import (
|
6 |
AutoTokenizer,
|
7 |
-
AutoModelForSequenceClassification
|
8 |
-
pipeline
|
9 |
)
|
10 |
import torch
|
11 |
import os
|
@@ -13,16 +10,19 @@ import requests
|
|
13 |
from collections import Counter
|
14 |
import warnings
|
15 |
from nltk.tokenize import word_tokenize
|
16 |
-
from nltk.util import ngrams
|
17 |
import nltk
|
18 |
-
from wordcloud import WordCloud
|
19 |
import re
|
20 |
import google.generativeai as genai
|
21 |
from dotenv import load_dotenv
|
|
|
22 |
warnings.filterwarnings('ignore')
|
23 |
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
|
|
26 |
|
27 |
class ReviewAnalyzer:
|
28 |
def __init__(self):
|
@@ -225,8 +225,18 @@ class ReviewAnalyzer:
|
|
225 |
|
226 |
def analyze_reviews(self, df):
|
227 |
"""Tüm yorumları analiz et"""
|
228 |
-
|
229 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
230 |
|
231 |
def analyze_reviews(file_path):
|
232 |
df = pd.read_csv(file_path)
|
|
|
1 |
import pandas as pd
|
2 |
import numpy as np
|
|
|
|
|
3 |
from transformers import (
|
4 |
AutoTokenizer,
|
5 |
+
AutoModelForSequenceClassification
|
|
|
6 |
)
|
7 |
import torch
|
8 |
import os
|
|
|
10 |
from collections import Counter
|
11 |
import warnings
|
12 |
from nltk.tokenize import word_tokenize
|
|
|
13 |
import nltk
|
|
|
14 |
import re
|
15 |
import google.generativeai as genai
|
16 |
from dotenv import load_dotenv
|
17 |
+
|
18 |
warnings.filterwarnings('ignore')
|
19 |
|
20 |
+
# NLTK indirmelerini try-except bloğuna alalım
|
21 |
+
try:
|
22 |
+
nltk.download('stopwords', quiet=True)
|
23 |
+
nltk.download('punkt', quiet=True)
|
24 |
+
except:
|
25 |
+
print("NLTK dosyaları indirilemedi, devam ediliyor...")
|
26 |
|
27 |
class ReviewAnalyzer:
|
28 |
def __init__(self):
|
|
|
225 |
|
226 |
def analyze_reviews(self, df):
|
227 |
"""Tüm yorumları analiz et"""
|
228 |
+
try:
|
229 |
+
# Yorumları filtrele
|
230 |
+
filtered_df = self.filter_reviews(df)
|
231 |
+
|
232 |
+
# Sentiment analizi yap
|
233 |
+
analyzed_df = self.analyze_sentiment(filtered_df)
|
234 |
+
|
235 |
+
return analyzed_df
|
236 |
+
|
237 |
+
except Exception as e:
|
238 |
+
print(f"Analiz sırasında hata oluştu: {str(e)}")
|
239 |
+
return pd.DataFrame()
|
240 |
|
241 |
def analyze_reviews(file_path):
|
242 |
df = pd.read_csv(file_path)
|