自然言語処理(NLP)でテキスト分類を行うサンプルコード
自然言語処理(NLP)のタスクの一例として、テキスト分類を行うサンプルコードを提供します。この例では、IMDb映画レビューデータセットを使用して、映画レビューが肯定的か否定的かを分類します。以下のコードは、PythonのライブラリであるTensorFlowとKerasを使用してモデルを構築し、トレーニングしています。
python
import tensorflow as tf
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Embedding, GlobalAveragePooling1D
# データのロードと前処理
max_features = 10000 # 特徴量の数
maxlen = 200 # 各レビューの最大長
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)
x_train = pad_sequences(x_train, maxlen=maxlen)
x_test = pad_sequences(x_test, maxlen=maxlen)
# モデルの構築
model = Sequential([
Embedding(input_dim=max_features, output_dim=16, input_length=maxlen),
GlobalAveragePooling1D(),
Dense(16, activation='relu'),
Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# モデルのトレーニング
history = model.fit(x_train, y_train, epochs=10, batch_size=32, validation_data=(x_test, y_test))
# モデルの評価
loss, accuracy = model.evaluate(x_test, y_test)
print(f'Loss: {loss}, Accuracy: {accuracy}')
このコードでは、IMDbデータセットから映画レビューをロードし、各レビューを整数のシーケンスに変換しています。次に、シーケンスの長さを揃えるために、pad_sequences関数を使用してパディングを行います。その後、ニューラルネットワークモデルを定義し、コンパイルします。このモデルは、Embeddingレイヤー、GlobalAveragePooling1Dレイヤー、全結合層などを含みます。最後に、トレーニングデータを使用してモデルをトレーニングし、テストデータで評価します。
この例では、映画レビューのテキスト分類タスクを扱っていますが、他のNLPタスクにも同様のアプローチを適用することができます。ただし、具体的なタスクやデータによっては、モデルのアーキテクチャやハイパーパラメータの調整が必要になる場合があります。

ディスカッション
コメント一覧
まだ、コメントがありません