Читать книгу 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` используется для задачи бинарной классификации (для определения позитивной или негативной тональности).