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

bookТокенізація

Перш ніж перейти безпосередньо до процесу токенізації, спочатку потрібно визначити, що таке токени.

Note
Визначення

Токени — це незалежні та мінімальні текстові компоненти, які мають визначений синтаксис і семантику.

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

Note
Визначення

Текстовий корпус (множина: корпуси) — це велика та структурована сукупність текстів, яка використовується у лінгвістичних та комп'ютерно-лінгвістичних дослідженнях. По суті, це всеосяжна колекція письмового або усного матеріалу, що слугує репрезентативною вибіркою певної мови, діалекту або тематичної області.

Токенізація речень

Почнемо з токенізації речень. На щастя, nltk надає функцію sent_tokenize() у модулі tokenize. Основне призначення цієї функції — розділення заданого тексту на список речень.

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

123456789
# Importing the sent_tokenize() function from nltk.tokenize import sent_tokenize import nltk # Downloading the "Punkt" tokenizer models nltk.download('punkt_tab') text = "Hello world. This is an example of sentence tokenization. NLTK makes it easy!" # Sentence tokenization sentences = sent_tokenize(text) print(sentences)
copy

Як бачите, тут немає нічого складного. Необхідно лише передати рядок із вашим текстом як аргумент функції sent_tokenize(), щоб отримати список речень. Щодо nltk.download('punkt_tab'), ця команда завантажує саме моделі токенізатора "Punkt". Завантажуючи моделі токенізатора Punkt, ви забезпечуєте наявність необхідних даних у NLTK для коректної токенізації речень і слів.

Note
Примітка

Розділові знаки наприкінці кожного речення включаються до складу речення.

Токенізація слів

У токенізації слів існує кілька поширених методів її виконання; однак ми розглянемо лише два найпоширеніші.

Найпростіший і найочевидніший спосіб — використати функцію split() класу string, яка за замовчуванням використовує символи нового рядка, пробіли та табуляції як роздільники. Проте ви також можете передати довільний рядок як аргумент, щоб використовувати його як роздільник.

123456
text = "This is an example of word tokenization." # Convert the text to lowercase text = text.lower() # Word tokenization using split() words = text.split() print(words)
copy
Note
Примітка

Щоб гарантувати, що токени на кшталт 'This' і 'this' розглядаються як однакові, важливо перетворити рядок у нижній регістр перед токенізацією.

Більш гнучким підходом є використання функції word_tokenize() з модуля tokenize бібліотеки nltk. Ця функція визначає та розділяє слова на основі пробілів і розділових знаків, ефективно розбиваючи речення на окремі слова. Подібно до sent_tokenize(), ця функція приймає рядок як аргумент.

Порівняймо цей підхід із використанням методу split(). Нижче наведено приклад із використанням word_tokenize():

12345678
from nltk import word_tokenize import nltk nltk.download('punkt_tab') text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using word_tokenize() words = word_tokenize(text) print(words)
copy

Тепер розглянемо, як метод split() працює з тим самим текстом:

12345
text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using split() words = text.split() print(words)
copy

У нашому прикладі word_tokenize(), на відміну від split(), коректно визначає розділові знаки та спеціальні символи як окремі токени. Він правильно відокремлює знак долара від числа та розпізнає крапки як окремі токени. Така деталізована токенізація є критично важливою для багатьох завдань НЛП, де точне розмежування слів і розділових знаків може суттєво вплинути на точність аналізу та отримані висновки.

question mark

Яким буде результат застосування методу split() до речення "It wasn't me, I swear!"?

Select the correct answer

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Awesome!

Completion rate improved to 3.45

bookТокенізація

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

Перш ніж перейти безпосередньо до процесу токенізації, спочатку потрібно визначити, що таке токени.

Note
Визначення

Токени — це незалежні та мінімальні текстові компоненти, які мають визначений синтаксис і семантику.

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

Note
Визначення

Текстовий корпус (множина: корпуси) — це велика та структурована сукупність текстів, яка використовується у лінгвістичних та комп'ютерно-лінгвістичних дослідженнях. По суті, це всеосяжна колекція письмового або усного матеріалу, що слугує репрезентативною вибіркою певної мови, діалекту або тематичної області.

Токенізація речень

Почнемо з токенізації речень. На щастя, nltk надає функцію sent_tokenize() у модулі tokenize. Основне призначення цієї функції — розділення заданого тексту на список речень.

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

123456789
# Importing the sent_tokenize() function from nltk.tokenize import sent_tokenize import nltk # Downloading the "Punkt" tokenizer models nltk.download('punkt_tab') text = "Hello world. This is an example of sentence tokenization. NLTK makes it easy!" # Sentence tokenization sentences = sent_tokenize(text) print(sentences)
copy

Як бачите, тут немає нічого складного. Необхідно лише передати рядок із вашим текстом як аргумент функції sent_tokenize(), щоб отримати список речень. Щодо nltk.download('punkt_tab'), ця команда завантажує саме моделі токенізатора "Punkt". Завантажуючи моделі токенізатора Punkt, ви забезпечуєте наявність необхідних даних у NLTK для коректної токенізації речень і слів.

Note
Примітка

Розділові знаки наприкінці кожного речення включаються до складу речення.

Токенізація слів

У токенізації слів існує кілька поширених методів її виконання; однак ми розглянемо лише два найпоширеніші.

Найпростіший і найочевидніший спосіб — використати функцію split() класу string, яка за замовчуванням використовує символи нового рядка, пробіли та табуляції як роздільники. Проте ви також можете передати довільний рядок як аргумент, щоб використовувати його як роздільник.

123456
text = "This is an example of word tokenization." # Convert the text to lowercase text = text.lower() # Word tokenization using split() words = text.split() print(words)
copy
Note
Примітка

Щоб гарантувати, що токени на кшталт 'This' і 'this' розглядаються як однакові, важливо перетворити рядок у нижній регістр перед токенізацією.

Більш гнучким підходом є використання функції word_tokenize() з модуля tokenize бібліотеки nltk. Ця функція визначає та розділяє слова на основі пробілів і розділових знаків, ефективно розбиваючи речення на окремі слова. Подібно до sent_tokenize(), ця функція приймає рядок як аргумент.

Порівняймо цей підхід із використанням методу split(). Нижче наведено приклад із використанням word_tokenize():

12345678
from nltk import word_tokenize import nltk nltk.download('punkt_tab') text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using word_tokenize() words = word_tokenize(text) print(words)
copy

Тепер розглянемо, як метод split() працює з тим самим текстом:

12345
text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using split() words = text.split() print(words)
copy

У нашому прикладі word_tokenize(), на відміну від split(), коректно визначає розділові знаки та спеціальні символи як окремі токени. Він правильно відокремлює знак долара від числа та розпізнає крапки як окремі токени. Така деталізована токенізація є критично важливою для багатьох завдань НЛП, де точне розмежування слів і розділових знаків може суттєво вплинути на точність аналізу та отримані висновки.

question mark

Яким буде результат застосування методу split() до речення "It wasn't me, I swear!"?

Select the correct answer

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

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

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

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