Мы все разговариваем. С момента пробуждения до момента, когда мы снова засыпаем, мы используем речь для передачи своих мыслей и идей. Сейчас, в современном мире цифровой связи, каждое мгновение мы генерируем огромный объем текстовых данных. Twitter, Facebook и другие платформы социальных сетей, а также сайты онлайн-покупок генерируют огромное количество релевантных данных. Эти данные являются золотыми приисками для правительств, корпораций и деловых домов, которые могут использовать их для создания полезных и действенных идей.

В нашем путешествии мы начнем с основ Regex и перейдем к другим методам обработки текста, таким как выделение корней, лемматизация и т. д.

Регулярное выражение

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

квантификаторы

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

В следующих фрагментах кода показаны некоторые квантификаторы и примеры их применения.

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

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

#importing regex library
import re
#text data example
data = 'It is very bright and sunny today. The temperature outside is 38 C.'
#pattern that we want to search
pat = '[^A-Za-z\s | ^\.]{2}' #regex will look for a pattern where there is a two digit number.
#So it'll give the temperature value as output'.
print(re.search(pat, data))

Поиск номера телефона в текстовых данных.

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

Функции регулярных выражений

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

Закон Ципфа

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

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

Таким образом, мы можем разделить наши текстовые данные на состав трех типов слов:
1. Часто встречающиеся слова, также известные как стоп-слова. Пример: in, on, at, the и т. д.
2. Важные слова, значимые для нашего анализа.
3. Редко встречающиеся слова, которые опять-таки не сообщают нам много информации.

Поэтому, прежде чем мы начнем анализировать какие-либо текстовые данные, мы удаляем все присутствующие в них стоп-слова. В Python NLTK предоставляет нам необходимый пакет для удаления стоп-слов.

Токенизация

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

NLTK предоставляет различные пакеты для различных видов токенизации.
1. Токенизация слов
2. Токенизация предложений
3. Токенизация твитов (отлично подходит для работы с жаргоном Твиттера)
4. Токенизация регулярных выражений ( для токенизации текста с помощью регулярного выражения)

Канонизация

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

Стемминг

Stemming — это основанный на правилах метод преобразования слова в корневую форму путем простого отсечения аффиксов. Базовое слово здесь называется «стебель». Таким образом, он преобразует «драйв», «вождение» и т. д. в «драйв». Стемминг выполняется быстрее, но обычно дает неточный результат для корневых слов.

Самый популярный стеммер для английского языка — Porter Stemmer.



лемматизация

Лемматизация — это более продвинутый подход к сокращению базовых слов. В этом процессе во входном слове ищется его базовое слово, итеративно перебирая все варианты словарных слов. Базовое слово здесь называется «лемма». Лемматизация дает нам более точный вывод, но она намного медленнее, чем стеммер.

Лемматизатор WordNet — самый популярный лемматизатор. Здесь нам нужно передать POS-тег слова в качестве параметра.



Фонетическое хэширование

Фонетический хэш слова основан на его произношении, а не на написании. Здесь мы сводим все варианты слова к общему слову, используя алгоритм Soundex. Soundex сокращает все слова до четырехзначного кода.

Необходимые шаги: Давайте создадим четырехзначный код для DELHI.
1. Первая буква кода — это первая буква входного слова. Поэтому он сохраняется как есть. Итак, первая буква — «D».
2. Нам нужно игнорировать все гласные и буквы H, W, Y. Таким образом, для следующего алфавита «L» наш код будет «4».
3. Следующим шагом является преобразование кода в четырехбуквенный код. Нам нужно дополнить его нулями, так как в нашем случае он имеет длину менее четырех символов (если он больше четырех символов, нам нужно обрезать его с правой стороны). Таким образом, наш окончательный выходной код будет «D400».

Мы можем увидеть функционирование Soundex в следующем инструменте.



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



Спасибо за ваше время!

Использованная литература :

  1. https://regexone.com/
  2. https://www.nltk.org/index.html
  3. https://docs.python.org/3.4/library/re.html
  4. https://www.dataquest.io/wp-content/uploads/2019/03/python-regular-expressions-cheat-sheet.pdf
  5. https://www.researchgate.net/publication/47390503_A_Bangla_Phonetic_Encoding_for_Better_Spelling_Suggestion