Как выполнить выборку объектов в наборе текстовых данных перед вводом их в модель с использованием Tensorflow - PullRequest
0 голосов
/ 21 января 2019

В настоящее время я работаю над моделью глубокого обучения для анализа настроений в данных Twitter. Я следую этому примеру из Здесь

Для повышения точности Я хочу выполнить выбор функции для текстовых данных Twitter, прежде чем вводить их в качестве ввода в модель нейронной сети. Я работаю над тензорным потоком и керасом.

Как этого добиться, используя тензорный поток?

    data = tweets[['text','airline_sentiment']]
data = data[data.airline_sentiment != "neutral"]
data['text'] = data['text'].apply(lambda x: x.lower())
data['text'] = data['text'].apply((lambda x: re.sub('[^a-zA-z0-9\s]','',x)))

max_fatures = 2000
tokenizer = Tokenizer(num_words=max_fatures, split=' ')
tokenizer.fit_on_texts(data['text'].values)
X = tokenizer.texts_to_sequences(data['text'].values)
X = pad_sequences(X)

embed_dim = 128
lstm_out = 196
model = Sequential()
model.add(Embedding(max_fatures, embed_dim,input_length = X.shape[1]))
model.add(Dropout(0.5))
model.add(LSTM(lstm_out, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(2,activation='softmax'))
model.compile(loss = 'categorical_crossentropy', optimizer='adam',metrics = ['accuracy'])
print(model.summary())

Y = pd.get_dummies(data['airline_sentiment']).values
X_train, X_test, Y_train, Y_test = train_test_split(X,Y, test_size = 0.33, random_state = 42)

X_val = X_train[:500]
Y_val = Y_train[:500]

partial_X_train = X_train[500:]
partial_Y_train = Y_train[500:]

batch_size = 512
history = model.fit(partial_X_train, 
                    partial_Y_train, 
                    epochs = 10, 
                    batch_size=batch_size, 
                    validation_data=(X_val, Y_val))

1 Ответ

0 голосов
/ 22 января 2019

Есть несколько способов сделать это.Одной простой идеей будет использование TF-IDF в качестве показателя важности функции.Вы можете использовать Keras Tokenizer для доступа к TF и ​​IDF после того, как вы позвонили fit_on_texts.

. Вы можете просто отфильтровать значения ниже некоторого порога: посмотрите на Предварительная обработка текста

В любом случае, я бы не советовал идти по этому пути, поскольку вы имеете дело с глубоким обучением, ваша модель должна автоматически осознать эту важность.Кроме того, вы используете вложения слов, сокращение встречающегося слова повлияет на эти вложения.

Ваш словарь (max_fatures) очень низкий, я бы сначала начал увеличивать это число.Keras сбрасывает все остальные токены:

num_words: None или int.Максимальное количество слов для работы (если установлено, токенизация будет ограничена верхними num_words наиболее распространенными словами в наборе данных)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...