Успешное представление данных для идентификации языка? - PullRequest
0 голосов
/ 29 января 2020

Моя задача - разработать глубокую нейронную сеть для распознавания текста. Чтобы распознать 5 языков, я представляю данные следующим образом:

letters_count = 32*5
word_max_letters = 14

tokenizer = Tokenizer(num_words=letters_count, char_level=True, lower=True)
tokenizer.fit_on_texts(train_data['word'])

sequences = tokenizer.texts_to_sequences(train_data['word'])
x_train = pad_sequences(sequences, maxlen=word_max_letters, padding='post')

standard_scaler = StandardScaler().fit(x_train)
x_train = standard_scaler.transform(x_train)

y_train = train_data['lang']
y_train = to_categorical(y_train)

Проблема в том, что для такой простой задачи я не могу go превысить 90% + точность. Хотя это довольно большой процент по сравнению с базовой c точностью (20%), обычно такие задачи достигают 97% + точность

Мне кажется, что смысл в представлении данных, потому что какая сеть Я бы не стал строить, я не добился лучшего результата. Я пытался увеличить размер выборки и сбалансировал количество слов по языкам, но это не помогло

Есть ли варианты улучшить модель? Возможно, мне следует использовать несколько входных данных и рассматривать как весь текст, так и слова отдельно?

Кстати, лучшая модель, которую я использовал:

X = Dense(2048, activation='relu', kernel_initializer='glorot_uniform')(input)
X = Dense(1024, activation='relu', kernel_initializer='glorot_uniform')(X)
X = Dense(512, activation='relu', kernel_initializer='glorot_uniform')(X)
X = Dense(512, activation='relu', kernel_initializer='glorot_uniform')(X)

X = Dense(5, activation='softmax', kernel_initializer='glorot_uniform')(X)

model_optimizer = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)

Заранее спасибо

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