Spaces:
Paused
Paused
File size: 3,085 Bytes
d57001c 7c603fe ea6fb88 d57001c 7c603fe d57001c 7c603fe 7e822e7 7c603fe a7df9f5 7c603fe 7e822e7 7c603fe 6da8f32 7c603fe 1cbb59c 7c603fe 7e822e7 1cbb59c 6da8f32 1cbb59c 6da8f32 1cbb59c 6da8f32 1cbb59c 7e822e7 1cbb59c 6da8f32 1cbb59c 6da8f32 1cbb59c 7e822e7 7c603fe |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
import time
import requests
import torch
from deep_translator import GoogleTranslator
from transformers import pipeline
# Replace the sentiment analysis model
sentiment_model = pipeline(
'sentiment-analysis',
model='distilbert-base-uncased-finetuned-sst-2-english',
tokenizer='distilbert-base-uncased-finetuned-sst-2-english',
device=0 if torch.cuda.is_available() else -1
)
def retrieve_from_vdb(query):
print(f"Отправка запроса к FastAPI сервису: {query}")
response = requests.post(f"{VECTOR_API_URL}/search/", json={"query": query})
if response.status_code == 200:
results = response.json().get("results", [])
print(f"Получено {len(results)} результатов: {results}")
return results
else:
print(f"Ошибка при поиске: {response.text}")
return []
def analyze_sentiment(comments):
print("Начинаем анализ настроений.")
results = []
for i in range(0, len(comments), 50):
batch = comments[i:i + 50]
print(f"Анализируем батч с {i} по {i + len(batch)} комментарий: {batch}")
translated_batch = []
valid_comments = [] # Список комментариев с успешным переводом
for comment in batch:
try:
translated = GoogleTranslator(source='auto', target="en").translate(comment)
if translated:
translated_batch.append(translated)
valid_comments.append(comment)
else:
print(f"Перевод комментария не удался или вернул пустую строку: {comment}")
except Exception as e:
print(f"Ошибка при переводе комментария '{comment}': {e}")
if not translated_batch:
print("Все переводы в этом батче не удались. Пропускаем этот батч.")
continue # Переходим к следующему батчу, если перевод не удался
print(f"Переведённый батч: {translated_batch}")
try:
batch_results = sentiment_model(translated_batch)
print(f"Результаты батча: {batch_results}")
results.extend(batch_results)
except Exception as e:
print(f"Ошибка при анализе настроений: {e}")
# Добавляем результат с неопределенным настроением для каждого переведенного комментария
for _ in translated_batch:
results.append({'label': 'UNKNOWN', 'score': 0.0})
time.sleep(1) # Задержка для предотвращения перегрузки API
print(f"Анализ настроений завершен. Общие результаты: {results}")
return results
|