Вложение слов о точности классификации текста
Код: https://github.com/emmanuellaanggi/disaster_tweet_sentiment
В этом посте я подробно расскажу, как использовать fastText и GloVe в качестве встраивания слов в модель LSTM для классификации текста. Я заинтересовался встраиванием слов, когда писал свою статью о генерации естественного языка. Он показал, что матрица внедрения для веса на слое внедрения улучшила производительность модели. Но поскольку это был NLG, измерение было субъективным. И я тоже использовал только fastText. Итак, в этой статье я хочу рассказать, как каждый метод (с fastText и GloVe и без него) влияет на прогноз. В моем коде Github я также сравниваю результат с CNN. Набор данных, который я здесь использую, взят c Kaggleи стостоит из твитов, в нем помечено есть ли в твите какие-то слова, говоярщие о настоящей катастрофе. Честно говоря, впервые увидев этот набор данных, я сразу подумал о BERT и его возможности понимать лучше текст, чем то, что я предложил в этой статье.
Но в любом случае в этой статье я остановлюсь на fastText и GloVe.
Поехали?
Data + Pre-Processing
Данные состояли из 7613 твитов (столбцы Текст) с меткой (столбец Цель), независимо от того, говорили они о настоящей катастрофе или нет. С 3271 строками, информирующими о реальной катастрофе, и 4342 строками, информирующими о реальной катастрофе. Данные о соревнованиях Kaggle опубликованы, и если вы хотите узнать больше о них, вы можете прочитать их здесь- https://www.kaggle.com/c/nlp-getting-started.
Пример нахождения слова бедствия в тексте:
«Лесной пожар возле Ла-Ронже-Саск. Канада »
Пример использования слова «бедствия»
«Эти коробки готовы взорваться! Наконец-то прибыли взрывающиеся котята! gameofkittens #explodingkittens »
Данные будут разделены для обучения (6090 строк) и тестирования (1523 строки), после чего перейдут к предварительной обработке. Мы будем использовать только текстовые и целевые столбцы.
Используемые здесь шаги предварительной обработки:
- Case Folding
- Cleaning Stop Words
- Tokenizing
Word Embedding
Шаг 1. Загрузите предварительно обученную модель
Первый шаг при работе с fastText и Glove - это загрузка каждой предварительно обученной модели. Я использовал Google Colab, чтобы предотвратить использование утечки памяти на моем ноутбуке, поэтому я загрузил его с библиотекой запросов и разархивировал прямо на ноутбук.
Я использовал самую большую предварительно обученную модель из обоих встраиваний слов. Модель fastText дала 2 миллиона векторов слов (токены 600B), а GloVe - 2,2 миллиона векторов слов (токены 840B), оба обучены на Common Crawl.
Предварительно обученная загрузка fastText
Предварительно обученная загрузка GloVe
Шаг 2. Загрузите предварительно обученную модель в Word Vectors.
FastText дал формат для загрузки векторов слов, поэтому я использовал его для загрузки обеих моделей.
Шаг 3. Матрица вложения.
Матрица внедрения будет использоваться в слое внедрения для веса каждого слова в обучающих данных. Это делается путем перечисления каждого уникального слова в наборе обучающих данных, существовавшего в токенизированном индексе слов, и определения веса внедрения с весом из fastText илиGloVe (подробнее о матрице внедрения).
Но есть вероятность, что есть слова, которых нет в векторах, такие как опечатки, аббревиатуры или имена пользователей. Эти слова будут храниться в списке, и мы сможем сравнить производительность обработки слов из fastText и GloVe.
Количество внедрений нулевых слов в fastText составляет 9175, а в GloVe - 9186. Можно предположить, что fastText обрабатывает больше слов, даже если предварительно обученный был обучен меньшему количеству слов.
Долговременная краткосрочная память (LSTM)
Вы можете выполнить точную настройку гиперпараметров или архитектуры, но я собираюсь использовать очень простой вариант с Embedding Layer, LSTM Layer, Dense layer и Drop out Layer.
Результат
fastText показал лучшую производительность с точностью около 83%, а GloVe - 81%. Разница в производительности не столь значительна, но, сравнивая ее с производительностью модели без встраивания слов (68%), мы можем увидеть значительное использование встраивания Word для веса слоя встраивания.
Чтобы узнать больше о производительности обучения, подробном коде и, если вы хотите применить его к другому набору данных.
Спасибо за чтение!