#python #tensorflow #keras
#python #tensorflow #keras
Вопрос:
Я создал модель машинного обучения, которая анализирует тональность английских предложений, но теперь я хочу обучить ту же модель для арабских предложений, однако производительность была плохой, в отличие от английской модели, зная, что я использовал тот же набор данных, переведенный на арабский. Я заметил, что функция из tensorflow raw_val_ds = tf.keras.preprocessing.text_dataset_from_directory(train_dir, batch_size=batch_size, validation_split=0.2, subset='validation', seed=seed)
не выдает вывод на арабском языке:
for text_batch, label_batch in raw_train_ds.take(1):
for i in range(3):
print("Review", text_batch.numpy()[i])
print("Label", label_batch.numpy()[i])
Вывод:
Review b'.xefxbaxaaxefxbbxb4xefxbax9f xefxbbxaaxefxbbxa8xefxbbx9cxefxbbx9f xefxbax80xefxbbxb2xefxbaxb8xefxbbx9fxefxbax8d xefxbaxbexefxbbx8cxefxbax91 xefxbbx92xefxbaxa3xefxbax8dxefxbaxaf xefxbbxaaxefxbbxa7xefxbax87 .Quatermain xefxbax94xefxbaxbcxefxbbx98xefxbbx9f
Label 1
однако на английском языке:
Review b"David Mamet is a very interesting and a very un-equal director. His first movie 'House of Games' was the one I liked best, and it set a series of films with characters whose perspective of life changes as they get into complicated situations, and so does the perspective of the viewer.
Label 1
Поэтому я думаю, что это проблема, поэтому, если кто-нибудь может помочь, я был бы признателен за это!
Спасибо!
Ответ №1:
В этой строке вы преобразуете свои выходные данные в кодировку UTF-8.
print("Review", text_batch.numpy()[i], encoding='utf-8')
Причина, по которой символы в арабском тексте печатаются в байтовых последовательностях, а символы в английском тексте — нет, заключается в том, что кодовая точка для арабских символов > = 128, а для английских символов <128. (Ссылка)
Опуская аргумент encoding, вы должны получить правильный вывод.
print("Review", text_batch.numpy()[i])
Комментарии:
1. Извините, но я отредактирую свой вопрос, у меня есть этот вывод при использовании
print("Review", text_batch.numpy()[i])
и неprint("Review", text_batch.numpy()[i], encoding='utf-8')
зная, что он выдает ошибку, bcz2. В этом случае вы могли бы попытаться расшифровать его.
print("Review", text_batch.numpy()[i].decode(encoding='utf-8'))
или, если текст закодирован с помощью cp720, вы можете попробоватьprint("Review", text_batch.numpy()[i].decode(encoding='cp720'))