import numpy as np
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, LSTM, Dense
from tensorflow.keras.optimizers import Adam
from sklearn.model_selection import train_test_split
# サンプルの製品特徴データ
product_features = [
"コンパクトなデザイン",
"高性能なプロセッサ",
"大容量のストレージ",
"高解像度のディスプレイ",
"バッテリーの持続時間が長い"
]
# テキストのトークン化とシーケンス化
tokenizer = Tokenizer()
tokenizer.fit_on_texts(product_features)
sequences = tokenizer.texts_to_sequences(product_features)
# パディング
maxlen = max([len(x) for x in sequences])
padded_sequences = pad_sequences(sequences, maxlen=maxlen)
# ラベルデータ(次の単語の予測)
labels = np.roll(padded_sequences, -1, axis=1)
# データの分割
X_train, X_val, y_train, y_val = train_test_split(padded_sequences, labels, test_size=0.2, random_state=42)
# モデルの構築
model = Sequential()
model.add(Embedding(input_dim=len(tokenizer.word_index)+1, output_dim=32, input_length=maxlen))
model.add(LSTM(64, return_sequences=True))
model.add(LSTM(64))
model.add(Dense(len(tokenizer.word_index)+1, activation='softmax'))
# モデルのコンパイル
model.compile(optimizer=Adam(), loss='sparse_categorical_crossentropy')
# モデルの学習
model.fit(X_train, y_train, epochs=100, validation_data=(X_val, y_val), verbose=2)
# 製品特徴の自動生成
# 製品特徴の自動生成
def generate_product_description(seed_text, length=10):
for _ in range(length):
sequence = tokenizer.texts_to_sequences([seed_text])[0]
padded_sequence = pad_sequences([sequence], maxlen=maxlen, padding='pre')
predicted_probabilities = model.predict(padded_sequence)[0]
predicted_index = np.argmax(predicted_probabilities)
next_word = tokenizer.index_word.get(predicted_index, '')
seed_text += ' ' + next_word
return seed_text
# 製品特徴の自動生成(サンプルの開始テキスト: "コンパクトなデザイン")
generated_description = generate_product_description("コンパクト")
print("Generated Product Description:", generated_description)
上記ですでにモデルが出来た。
これを使って実際に商品特徴の生成をするには、どのような入力情報がひつようか?
Next
ディスカッション
コメント一覧
まだ、コメントがありません