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

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

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

Suggested prompts:

Can you explain the difference between sentence and word tokenization?

Why is it important to use the Punkt tokenizer models in NLTK?

Can you give more examples of when precise tokenization is necessary?

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