Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Токенізація за допомогою регулярних виразів | Основи Попередньої Обробки Тексту
Вступ до NLP

bookТокенізація за допомогою регулярних виразів

Чому регулярні вирази?

Хоча функції word_tokenize() та sent_tokenize() з бібліотеки NLTK забезпечують зручні способи токенізації тексту на слова та речення, вони не завжди підходять для специфічних завдань обробки тексту. Тому розглянемо альтернативний підхід: токенізація за допомогою регулярних виразів (regex).

Note
Визначення

Регулярний вираз (regex) — це послідовність символів, яка визначає шаблон пошуку. Регулярні вирази використовуються для різних завдань обробки тексту, зокрема для пошуку, заміни та розділення тексту за певними шаблонами.

У контексті токенізації регулярні вирази дозволяють визначати власні шаблони для ідентифікації токенів, забезпечуючи більший контроль над процесом токенізації порівняно з готовими функціями.

Використання regexp_tokenize()

На щастя, бібліотека NLTK містить функцію regexp_tokenize() у модулі tokenize, яка розбиває рядок на підрядки за допомогою регулярного виразу. Ця функція особливо корисна, коли потрібно токенізувати текст за шаблонами, які стандартні токенізатори обробляють недостатньо ефективно.

Найважливішими параметрами regexp_tokenize() є перші два: text (рядок для токенізації) та pattern (шаблон регулярного виразу).

123456
from nltk.tokenize import regexp_tokenize text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = regexp_tokenize(text, r'\w+') print(tokens)
copy

Як видно, процес подібний до використання функції word_tokenize(), однак результати можуть відрізнятися залежно від шаблону. У нашому прикладі використовується шаблон '\w+', який відповідає послідовностям з однієї або більше літер, цифр чи підкреслень.

У результаті отримуємо список слів без розділових знаків, що відрізняється від word_tokenize(), оскільки остання зазвичай включає пунктуацію як окремі токени.

Використання RegexpTokenizer

Альтернативний підхід до кастомної токенізації передбачає використання класу RegexpTokenizer з модуля tokenize бібліотеки NLTK. Спочатку створіть екземпляр RegexpTokenizer, передавши бажаний шаблон регулярного виразу як аргумент. Після створення екземпляра зі вказаним шаблоном ви можете передати свій текст як аргумент до методу tokenize() цього екземпляра.

12345678
from nltk.tokenize import RegexpTokenizer # Define a tokenizer with a regular expression tokenizer = RegexpTokenizer(r'\w+') text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Цей підхід дає такі ж результати, і може бути кращим у випадках, коли потрібно використовувати один токенізатор для різних текстів, оскільки дозволяє створити токенізатор один раз і застосовувати його до різних текстових даних без повторного визначення шаблону щоразу.

Розглянемо ще один приклад. Припустимо, ми хочемо, щоб токенами були лише цифри, тоді наш шаблон '\d+' буде шукати одну або більше цифр, як у прикладі нижче:

1234567
from nltk.tokenize import RegexpTokenizer tokenizer = RegexpTokenizer(r'\d+') text = "Give my $100 back right now or $20 each month" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Загалом, токенізація за допомогою регулярних виразів забезпечує високий рівень налаштування, що робить її ідеальною для обробки складних шаблонів і специфічних правил токенізації, які важко реалізувати стандартними методами, такими як word_tokenize(). У нашому прикладі, коли потрібно було використовувати числа як токени, word_tokenize() не підходив для цього завдання.

question mark

Яке з наведених тверджень найкраще описує, що саме знаходить регулярний вираз '\w+' при використанні з regexp_tokenize() або RegexpTokenizer?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 5

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 3.45

bookТокенізація за допомогою регулярних виразів

Свайпніть щоб показати меню

Чому регулярні вирази?

Хоча функції word_tokenize() та sent_tokenize() з бібліотеки NLTK забезпечують зручні способи токенізації тексту на слова та речення, вони не завжди підходять для специфічних завдань обробки тексту. Тому розглянемо альтернативний підхід: токенізація за допомогою регулярних виразів (regex).

Note
Визначення

Регулярний вираз (regex) — це послідовність символів, яка визначає шаблон пошуку. Регулярні вирази використовуються для різних завдань обробки тексту, зокрема для пошуку, заміни та розділення тексту за певними шаблонами.

У контексті токенізації регулярні вирази дозволяють визначати власні шаблони для ідентифікації токенів, забезпечуючи більший контроль над процесом токенізації порівняно з готовими функціями.

Використання regexp_tokenize()

На щастя, бібліотека NLTK містить функцію regexp_tokenize() у модулі tokenize, яка розбиває рядок на підрядки за допомогою регулярного виразу. Ця функція особливо корисна, коли потрібно токенізувати текст за шаблонами, які стандартні токенізатори обробляють недостатньо ефективно.

Найважливішими параметрами regexp_tokenize() є перші два: text (рядок для токенізації) та pattern (шаблон регулярного виразу).

123456
from nltk.tokenize import regexp_tokenize text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = regexp_tokenize(text, r'\w+') print(tokens)
copy

Як видно, процес подібний до використання функції word_tokenize(), однак результати можуть відрізнятися залежно від шаблону. У нашому прикладі використовується шаблон '\w+', який відповідає послідовностям з однієї або більше літер, цифр чи підкреслень.

У результаті отримуємо список слів без розділових знаків, що відрізняється від word_tokenize(), оскільки остання зазвичай включає пунктуацію як окремі токени.

Використання RegexpTokenizer

Альтернативний підхід до кастомної токенізації передбачає використання класу RegexpTokenizer з модуля tokenize бібліотеки NLTK. Спочатку створіть екземпляр RegexpTokenizer, передавши бажаний шаблон регулярного виразу як аргумент. Після створення екземпляра зі вказаним шаблоном ви можете передати свій текст як аргумент до методу tokenize() цього екземпляра.

12345678
from nltk.tokenize import RegexpTokenizer # Define a tokenizer with a regular expression tokenizer = RegexpTokenizer(r'\w+') text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Цей підхід дає такі ж результати, і може бути кращим у випадках, коли потрібно використовувати один токенізатор для різних текстів, оскільки дозволяє створити токенізатор один раз і застосовувати його до різних текстових даних без повторного визначення шаблону щоразу.

Розглянемо ще один приклад. Припустимо, ми хочемо, щоб токенами були лише цифри, тоді наш шаблон '\d+' буде шукати одну або більше цифр, як у прикладі нижче:

1234567
from nltk.tokenize import RegexpTokenizer tokenizer = RegexpTokenizer(r'\d+') text = "Give my $100 back right now or $20 each month" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Загалом, токенізація за допомогою регулярних виразів забезпечує високий рівень налаштування, що робить її ідеальною для обробки складних шаблонів і специфічних правил токенізації, які важко реалізувати стандартними методами, такими як word_tokenize(). У нашому прикладі, коли потрібно було використовувати числа як токени, word_tokenize() не підходив для цього завдання.

question mark

Яке з наведених тверджень найкраще описує, що саме знаходить регулярний вираз '\w+' при використанні з regexp_tokenize() або RegexpTokenizer?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 5
some-alt