Как добавить эмодзи в API Keras Tokenizer? - PullRequest
0 голосов
/ 26 декабря 2018

Я занимаюсь анализом настроений в Твиттере.Из некоторой литературы было продемонстрировано, что использование информации из смайликов и смайликов может улучшить производительность классификатора настроений в данных 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

Любая помощь и идеи будут оценены!Спасибо!С Рождеством!

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