Я занимаюсь анализом настроений в Твиттере.Из некоторой литературы было продемонстрировано, что использование информации из смайликов и смайликов может улучшить производительность классификатора настроений в данных Twitter (например, работа, сделанная IBM Выражение настроения через смайлики в социальных сетях в 2015 году).Более того, проект emoji2vec emoji2vec , который может создавать представление каждого смайлика на основе описаний смайликов описание смайликов , действительно полезен для анализа настроений в Твиттере.
Теперь яиспользуя Keras для построения последовательной модели, чтобы сделать эту классификацию настроений.Но мой вопрос заключается в том, что, прежде чем создавать все последовательные модели, вы должны сначала передать свои текстовые данные в API Tokenizer:
tokenizer = Tokenizer(num_words= vocabulary_size)
tokenizer.fit_on_texts(df['Phrase'])
sequences = tokenizer.texts_to_sequences(df['Phrase'])
data = pad_sequences(sequences, maxlen=50)
, где df
- мой кадр данных pandas.Следовательно, возможно ли добавить эмодзи в Tokenizer (поскольку API Tokenizer сначала выбирает самые верхние vocabulary size
наиболее часто встречающиеся слова и создает пару слов-индексов)?Emojis, по-видимому, реже, чем слова, и они являются довольно значительными чертами в классификации чувств.Поэтому я хочу добавить смайлики в API-интерфейс Tokenizer Keras и создать пару смайликов-индексов смайликов.
Когда речь заходит о модели, я создаю модель BiLSTM с предварительно обученным встраиванием (например, обученным FastText).).Как я мог объединить представление эмодзи и представление слова в этой задаче?Следующий код показывает мою модель BiLSTM:
# BiLSTM model with Conv1D and fasttext word embedding
def get_bi_lstm_model(embedding_matrix):
model = Sequential()
model.add(Embedding(input_dim=vocabulary_size, output_dim=dim, input_length=input_length,
weights=[embedding_matrix], trainable=False, name='embedding_1'))
model.add(Dropout(0.2, name='dropout_1'))
model.add(Conv1D(64, 5, activation='relu', name='conv1d_1'))
model.add(MaxPooling1D(pool_size=4, name='maxpooling_1'))
model.add(Bidirectional(LSTM(lstm_output_dim, dropout=0.2, recurrent_dropout=0.2, return_sequences=True), merge_mode='concat',
name='bidirectional_1'))
model.add(Flatten(name = 'flatten_1'))
model.add(Dense(3, activation='softmax', name='dense_1'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy', f1_score])
return model
Любая помощь и идеи будут оценены!Спасибо!С Рождеством!