до сих пор мы говорили об алгоритмах машинного обучения и глубокого обучения, которые можно использовать в любой области. Одной из основных областей, где используются алгоритмы ML / DL, является обработка естественного языка (NLP), поэтому с этого момента давайте поговорим о NLP.

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

давайте разберемся с обработкой естественного языка в нашем пространстве.

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

Основная цель здесь состоит в том, чтобы заставить компьютер понимать язык так же, как мы, и заставить компьютер реагировать так же, как и мы.

Мы можем разбить это на 2 части

  1. Понимание естественного языка:

Система должна понимать язык (части речи, контекст, синтаксис, семантику, интерпретацию и т. Д.)

Обычно это можно сделать с помощью машинного обучения (хотя проблемы есть).

Это не так уж сложно и дает хорошие результаты по точности.

2. Создание естественного языка

Система должна быть способна отвечать / генерировать текст (планирование текста, планирование предложений, создание значимых фраз и т. Д.)

Это можно сделать с помощью глубокого обучения, поскольку требуется глубокое понимание (хотя проблемы есть).

сделать очень сложно, и результаты могут быть неточными.

Итак, где мы используем ML в НЛП ???

Это пара приложений, на которых мы сосредоточимся

  1. Классификация и кластеризация текста
  2. Поиск и извлечение информации
  3. Машинный перевод (с одного языка на другой)
  4. Система вопросов и ответов
  5. проверка орфографии и грамматики
  6. Тематическое моделирование и анализ настроений
  7. Распознавание речи

Я постараюсь объяснить и дополнить все темы в следующих рассказах. В этом рассказе мы узнаем основные основы работы с текстом / документом, которые являются общими для многих приложений.

Примечание: теперь предположим, что текст, данные, документ, предложение и абзац одинаковы.

Что такое текст ??

Текст - это набор слов, написанных последовательно.

Каждое слово в тексте имеет значение, в то время как текст может иметь или не иметь значения.

в машинном уклоне мы берем черты правильно? так что здесь каждое слово - это особенность (уникальность).

Ex :

Текст: Я люблю программироватьЯ, люблю, программирование - вот особенности этого ввода.

Как мы получаем функции ??

Сначала примените Токенизацию (текст делится на токены), мы можем использовать инструменты с открытым исходным кодом, такие как NLTK, для получения токенов из текста.

проверить этот пример

Итак, здесь мы имеем программирование, повторяющееся дважды как токены, но мы берем только один раз, поэтому функции для этого текста следующие: → I, любовь, программирование, и, также, любит меня.

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

удаление этих словоизменительных окончаний называется лемматизацией.

так что теперь особенности этого текста: → Я, люблю, программирование, и, также, я.

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

есть концепция под названием Steeming

так что если мы применяем управление паром, то

так что теперь функции этого текста: → Я, люблю, программа, и, также, я.

есть пара слов, которые очень часто встречаются в каждом языке и не имеют особого значения, эти слова называются стоп-словами.

Стоп-слова на английском языке:

Поэтому стоп-слова следует удалить из нашего текста.

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

заключительные особенности этого текста: → любовь, программа, также.

Это понятно и круто.

Здесь мы получаем чистый текст, поэтому мы работаем над ним и генерируем функции, но в реальном мире мы не получаем чистые данные, мы всегда получаем необработанные данные, которые содержат много нежелательных вещей (символы, ссылки, хэштеги, числа, пробелы и т. д.)

Нам нужно очистить данные, этот процесс можно назвать нормализацией данных.

возьмем твит из твиттера, поскольку это реальные данные, и применим нормализацию твита

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

Сравнение текстовых характеристик

так как же можно нормализовать оригинальный твит ???

мы удаляем нежелательные элементы в данных с помощью регулярных выражений.

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

Возьмем набор данных игрушек, в котором есть 2 обучающих примера (документы / тексты).

1 → Я люблю программировать

2 → Программирование тоже меня любит

После нормализации, лемматизации и стоп-слов

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

Хорошо, мы получили функции из текста. Значения функций = слова

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

поэтому мы принимаем за значение счетчик каждого слова в каждом документе.

поэтому вместо того, чтобы кормить «я люблю программирование» или «люблю программирование» [после изменения], мы загружаем [1 1 0] как вектор.

Я называю этот процесс векторизацией документа.

   X
x1 x2 x3
1  1  0 --> just like our previous ml data and we can do what ever
1  1  1     we wanna do.

вот код для этого

Мы просто преобразовали каждый документ в вектор.

6-я ячейка - это векторизация подсчета, она дает подсчет того, сколько раз слово появлялось во всем наборе данных.

мы можем добиться тех же результатов, используя векторизатор подсчета scikit learn.

Наиболее часто встречающиеся слова называются верхним пакетом слов.

Надеюсь, вы понимаете код.

Есть еще много вещей, которые нужно изучить и указать здесь, в следующем рассказе я расскажу об оставшихся темах, а именно о TFIDF и word2vec.

Сообщите мне свои мысли / предложения / вопросы.

Это все для этой истории, мы увидим в следующий раз до тех пор Seeeeeee Yaaaaaaaa!

Полный код находится на моем Github.