如何将emoji添加到Keras标记器API?

2024-06-17 12:36:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个Twitter情绪分析项目。一些文献已经证明,使用emoji和emoticon中的信息可以提高Twitter数据上情感分类器的性能(例如IBMSentiment Expression via Emoticons on Social Media在2015年所做的一项工作)。此外,emoji2vec项目emoji2vec可以基于emoji描述emoji description创建每个emoji的表示,这对Twitter情绪分析非常有帮助。你知道吗

现在,我正在使用Keras构建序列模型来进行情感分类。但我的问题是,在构建所有序列模型之前,您应该首先将文本数据传递给标记器API:

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是我的数据帧。因此,是否可以将emoji添加到标记器中(因为标记器API首先选择最频繁的单词并构造单词索引对)?情感词的出现频率明显低于词语,是情感分类中非常重要的特征。因此,我想将emojis添加到keras标记器API中,并创建emojis的emoji索引对。你知道吗

当谈到模型时,我正在构建一个具有预先训练的嵌入的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

任何帮助和见解将不胜感激!谢谢!圣诞快乐!你知道吗


Tags: 数据name标记模型addapisizemodel