Читать книгу 120 практических задач онлайн
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np
# Пример данных (данные нужно подставить под ваши)
texts = ["Этот фильм очень хорош!", "Я не люблю этот продукт", "Нейтральный отзыв здесь"]
labels = ["позитивный", "негативный", "нейтральный"]
# Преобразование меток в числовой формат
label_encoder = LabelEncoder()
labels_encoded = label_encoder.fit_transform(labels)
# Векторизация текстовых данных
vectorizer = TfidfVectorizer(max_features=1000)
X = vectorizer.fit_transform(texts).toarray()
y = np.array(labels_encoded)
# Разделение данных на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Параметры модели и обучения
max_words = 1000 # максимальное количество слов в словаре
embedding_dim = 100 # размерность векторов слов
lstm_units = 64 # количество нейронов в LSTM слое
# Создание модели
model = Sequential()
# Векторное представление слов (Embedding)
model.add(Embedding(max_words, embedding_dim, input_length=X.shape[1]))
# LSTM слой
model.add(LSTM(lstm_units))
# Полносвязный слой
model.add(Dense(1, activation='sigmoid'))
# Компиляция модели
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# Вывод архитектуры модели
model.summary()
# Обучение модели
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_test, y_test))
```
Пояснение архитектуры и процесса:
1. Векторное представление слов (Embedding): Embedding слой преобразует каждое слово в вектор фиксированной длины (`embedding_dim`). Это позволяет модели учитывать семантические отношения между словами в контексте анализа тональности.
2. LSTM слой: LSTM слой обрабатывает последовательность слов, учитывая их контекст и последовательность в тексте. Он помогает модели улавливать долгосрочные зависимости и контекст при анализе текстовых данных.
3. Полносвязный слой: Выходной слой с активацией `sigmoid` используется для задачи бинарной классификации (для определения позитивной или негативной тональности).