Фото RetroSupply на Unsplash
Обзор
В области НЛП доступно множество подходов/моделей для решения любой конкретной задачи. Придумать определенный подход при работе над простыми задачами, такими как классификация текста или анализ тональности, может быть сложно. Итак, здесь я записал некоторые моменты, которые могут помочь сузить варианты и выбрать подходящую модель для работы.
Проанализируйте постановку проблемы
Это основное требование, чтобы узнать все подробности о проблеме. Это,
- Сколько типов классов мы собираемся классифицировать. Бинарная или многоклассовая или многоуровневая классификация?
- Если мы имеем дело с анализом настроений, может быть задействовано более двух целей.
- Обучающие данные представлены в равных пропорциях для каждого класса или они несбалансированы?
Основываясь на этих параметрах, мы можем перейти к следующей части, которая занимается анализом данных.
Фото Джейсона Люна на Unsplash
Анализ данных
Первая важная часть для рассмотрения текстовых данных: требуется ли очистка текста? То есть нас интересует только соответствующий текст, а не числа, HTTP-ссылки, символы с диакритическими знаками и т. д.
Очистка текста
Фото Creative Exchange на Unsplash
Если тексты, с которыми мы имеем дело, представляют собой небольшие предложения, такие как твиты, и нам нужно предсказать настроение, то нет особого смысла удалять стоп-слова, потому что большинство стоп-слов, включенных в такие библиотеки, как NLTK, Gensim, spaCy и т. д., вместо этого полезно правильно предсказать правильное настроение, и их удаление может привести к снижению производительности модели. Поэтому рекомендуется соблюдать общие стоп-слова, содержащиеся в этих библиотеках, прежде чем удалять их.
Например. ниже приведен список стоп-слов, содержащихся в корпусе nltk:
Выделение ключевых слов
Точно так же удаление всех знаков препинания и не буквенно-цифровых символов иногда может привести к плохому построению контекста для модели. Например, такие символы, как #хэштеги, могут быть более уместными, чтобы добавить дополнительный вес в текст с помощью NERи помочь модели лучше классифицировать.
Сокращение словарного запаса
Если тексты слишком длинные, есть вероятность того, что слова будут использоваться более чем в одной форме, которая в контексте имеет одно и то же значение.
Например: список из 5 слов в приведенном ниже коде сокращен до 1 слова с корнем, что также помогло сохранить соответствующее значение слова. Таким образом, уменьшается размер словаря для модели.
Как мы видим выше в примере, вывод корней и лемматизация могут помочь значительно уменьшить размер вектора слова, сохраняя при этом контекст. В то время как пользовательский Stemmer следует предпочесть для правильного сохранения смысла предложений, и аналогичным образом настраиваемый список стоп-слов выбирается вместо общего списка, чтобы лучше работать с имеющимися данными.
Тип текста и цель
Анализ типов текстовых данных, с которыми мы имеем дело, может помочь выбрать правильный метод встраивания слов для нашей задачи.
Например: если мы имеем дело с классификацией документов, то векторы TF-IDF могут быть рекомендуемым выбором вместо векторов подсчета.
Наоборот, если мы хотим уловить значение и отношения между словами и целью, скажем, для обзора фильма, тогда модели Word2Vec будут превосходный выбор по сравнению с векторизатором хеширования.
Фото Энгина Акюрта на Unsplash
Тип модели
В большинстве случаев модели размещаются на облачных серверах, и мы не собираемся использовать лишние вычислительные мощности и ресурсы.
Поэтому, если векторы слов не очень велики после всей предварительной обработки текста, мы можем попробовать обучение и прогнозы. с классификаторами sklearn, такими как логистическая регрессия, наивный байесовский анализ, случайный лес, SVM и т. д.
Если есть необходимость в лучшем понимании значения предложения, мы можем перейти к методам глубокого обучения, использующим последовательность текста для подачи контекст во вложения слов и использовать такие архитектуры, как RNN, LSTM, или современные модели, такие как BERT и т. д.
Вывод
Мы видели здесь различные шаги, которые можно рассматривать для сужения типа модели или алгоритма, которые нам понадобятся для достижения эффективной точности решения проблемы.
Если у вас есть какие-либо мысли, идеи и предложения, поделитесь ими и дайте мне знать. Спасибо за чтение!