Weka

Weka (среда Waikato для анализа знаний) - это программное обеспечение с открытым исходным кодом, разработанное Университетом Вайкато и используемое для задач автоматического анализа данных. Weka - это гибкий и простой способ реализации, он портативен и, следовательно, не зависит от платформы. Он предоставляет различные алгоритмы, которые можно использовать для любого выбранного набора данных. Далее следуют приложения, предоставленные Weka в своем приложении (рисунок 1):

  • Explorer: интерфейс для выполнения задач интеллектуального анализа необработанных данных или данных, собранных с помощью парсинга.
  • Experimenter: позволяет пользователям выполнять различные экспериментальные варианты наборов данных.
  • KnowledgeFlow: проводник с функцией перетаскивания. Поддерживает постепенное обучение на основе предыдущих результатов
  • WorkBench: объединяет все графические интерфейсы в один
  • Простой интерфейс командной строки: интерфейс командной строки для выполнения команд с терминала.

Рисунок 1. Графический интерфейс Weka

Ниже приведены методы, доступные в программном обеспечении для задач обработки данных:

Методы

  • Ассоциация
  • Выбор атрибута
  • Классификаторы
  • Кластеры
  • Фильтры предварительной обработки

Алгоритмы

  • Классификация KNN
  • Многоцелевой эволюционный алгоритм
  • C4.5 Дерево принятия решений
  • Вектор обучения, частица квантования, оптимизация роя

Обработка естественного языка (NLP)

В современном мире, когда люди пытаются развернуть машины для своей повседневной работы, пользователям важно, чтобы они были проинформированы о результатах или текущем отчете о процессе. НЛП может быть способом помочь машинам научиться общаться или помочь нам понять сообщения, которые машина хочет нам передать.

Ниже перечислены популярные области, в которых НЛП уже используется:

  • Статьи (новости, блоги и т. Д.)
  • Прогнозирование ваших поисков
  • Чат-боты
  • Сортировка писем
  • видео / рекомендации сайта
  • Текст в речь

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

Практическое руководство WEKA

Анализ настроений - очень важная часть машинного обучения. Это не только поможет машине узнать, какие эмоции или чувства проявляет человек, но и будет отвечать им взаимностью. Здесь я попытался реализовать простой анализ тональности текстовой базы данных Twitter.

Мы будем использовать KnowledgeFlow для следующего анализа.

Шаг 1. Получите набор данных
Я получил данные отсюда. В наборе данных есть четыре поля: tweet_id, настроение, автор и содержание. Мы использовали CSVLoader из DataSource. Данные содержат около 40 000 точек данных, экземпляров или строк данных. Обработка такого большого набора данных может быть сложной и трудоемкой, к тому же мой процессор не может обрабатывать так много данных и обработки, поэтому я произвольно удалил / отсек 50% данных. Это можно сделать с помощью Filter.Unsupervised.Instances.RemovePercentage. Эти данные необходимо сохранить в другом файле CSV, поэтому необходимо добавить еще один компонент для сохранения файла в формате CSV. Итак, теперь у меня есть три компонента для моего потока знаний DataSource.CSVLoade r, Filter.Unsupervised.Instances.RemovePercentage и DataSink.CSVSaver

  1. Щелкните правой кнопкой мыши значок CSVLoader и выберите «Настроить». Вы сможете редактировать свойства CSVLoader и добавлять файл.
  2. После того, как данные установлены, вы можете ввести этот набор данных в следующий компонент, то есть в фильтр.
  3. Щелкните правой кнопкой мыши CSVLoader и выберите набор данных. Он автоматически покажет, что стрелка / линия выйдет наружу. Присоединяйтесь к фильтру

Совет
Пользователи могут настраивать и настраивать свойства компонента.
Компонент CSVSaver получает набор данных, вводимый фильтром.

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

Рис. 2. Завершение шага 1

Шаг 2. Предварительная обработка данных

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

  1. Разбор слов и токенизация
  2. Удаление стоп-слова
  3. Лемматизация или стемминг
  4. Извлечение признаков

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

Я выбрал фильтр StringToWordVector из filters.unsupervised.attribute. Свойства фильтра можно редактировать, щелкнув фильтр правой кнопкой мыши (Рисунок 3).

Рисунок 3: свойства wordtovec

Шаг 3. Классификация

Для классификации нам нужно сначала определить класс или функцию, которая будет прогнозироваться с помощью Filter.Unsupervised.attribute.ClassAssigner. Нам нужно добавить это к шагу 2, то есть к предварительно обработанным данным.

Нам нужно создать обучающие и тестовые данные с помощью сверток проверки, нам понадобится Evaluation.CrossValidationFoldMaker. Это даст нам два набора данных: тестовый и обучающий. Мы можем использовать его непосредственно для нашего классификатора.

Классификатор, существует несколько классификаторов, используемых для анализа настроений, к ним относятся:

  • Наивный
  • Случайный лес
  • Логистическая регрессия
  • XgBoost

И еще несколько. Я использовал классификатор NaiveBayes, Classifier.bayes.NaiveBayes.

Обученная модель даст нам результаты в пакетном формате, поскольку мы используем перекрестную проверку для 10 кратностей, мы получим 10 результатов. Нам нужно добавить еще один компонент для оценки производительности классификатора, Evaluation.ClassifierPerformanceEvaluator. Схема потока знаний выглядит как рисунок 4 после шага 3.

Рисунок 4. Завершение шага 3

Шаг 4: Результаты
Обработка завершена, для части визуализации у нас есть Visualization.TextViewer. Есть разные способы просмотреть окончательный результат, но текст выглядит более подходящим для задачи.

Результаты показаны на рисунке 6.
Окончательная блок-схема знаний представлена ​​на рис. 5.

Рисунок 5. Диаграмма потока знаний для анализа настроений

Рисунок 6. Результаты после классификации

Вывод

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