Токенізація
Перш ніж перейти безпосередньо до процесу токенізації, спочатку потрібно визначити, що таке токени.
Токени — це незалежні та мінімальні текстові компоненти, які мають визначений синтаксис і семантику.
Відповідно, токенізація — це процес розділення тексту на токени. Наприклад, абзац тексту, текстовий документ або корпус текстів складається з кількох компонентів, які можна поділити на речення, фрази та слова. Насправді, найпоширенішими методами токенізації є токенізація речень і слів, яка використовується для поділу текстового документа (або корпусу) на речення, а кожне речення — на слова.
Текстовий корпус (множина: корпуси) — це велика та структурована сукупність текстів, яка використовується у лінгвістичних та комп'ютерно-лінгвістичних дослідженнях. По суті, це всеосяжна колекція письмового або усного матеріалу, що слугує репрезентативною вибіркою певної мови, діалекту або тематичної області.
Токенізація речень
Почнемо з токенізації речень. На щастя, 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)
Як бачите, тут немає нічого складного. Необхідно лише передати рядок із вашим текстом як аргумент функції sent_tokenize(), щоб отримати список речень. Щодо nltk.download('punkt_tab'), ця команда завантажує саме моделі токенізатора "Punkt". Завантажуючи моделі токенізатора Punkt, ви забезпечуєте наявність необхідних даних у NLTK для коректної токенізації речень і слів.
Розділові знаки наприкінці кожного речення включаються до складу речення.
Токенізація слів
У токенізації слів існує кілька поширених методів її виконання; однак ми розглянемо лише два найпоширеніші.
Найпростіший і найочевидніший спосіб — використати функцію split() класу string, яка за замовчуванням використовує символи нового рядка, пробіли та табуляції як роздільники. Проте ви також можете передати довільний рядок як аргумент, щоб використовувати його як роздільник.
123456text = "This is an example of word tokenization." # Convert the text to lowercase text = text.lower() # Word tokenization using split() words = text.split() print(words)
Щоб гарантувати, що токени на кшталт 'This' і 'this' розглядаються як однакові, важливо перетворити рядок у нижній регістр перед токенізацією.
Більш гнучким підходом є використання функції word_tokenize() з модуля tokenize бібліотеки nltk. Ця функція визначає та розділяє слова на основі пробілів і розділових знаків, ефективно розбиваючи речення на окремі слова. Подібно до sent_tokenize(), ця функція приймає рядок як аргумент.
Порівняймо цей підхід із використанням методу split(). Нижче наведено приклад із використанням word_tokenize():
12345678from 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)
Тепер розглянемо, як метод split() працює з тим самим текстом:
12345text = "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)
У нашому прикладі word_tokenize(), на відміну від split(), коректно визначає розділові знаки та спеціальні символи як окремі токени. Він правильно відокремлює знак долара від числа та розпізнає крапки як окремі токени. Така деталізована токенізація є критично важливою для багатьох завдань НЛП, де точне розмежування слів і розділових знаків може суттєво вплинути на точність аналізу та отримані висновки.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.45
Токенізація
Свайпніть щоб показати меню
Перш ніж перейти безпосередньо до процесу токенізації, спочатку потрібно визначити, що таке токени.
Токени — це незалежні та мінімальні текстові компоненти, які мають визначений синтаксис і семантику.
Відповідно, токенізація — це процес розділення тексту на токени. Наприклад, абзац тексту, текстовий документ або корпус текстів складається з кількох компонентів, які можна поділити на речення, фрази та слова. Насправді, найпоширенішими методами токенізації є токенізація речень і слів, яка використовується для поділу текстового документа (або корпусу) на речення, а кожне речення — на слова.
Текстовий корпус (множина: корпуси) — це велика та структурована сукупність текстів, яка використовується у лінгвістичних та комп'ютерно-лінгвістичних дослідженнях. По суті, це всеосяжна колекція письмового або усного матеріалу, що слугує репрезентативною вибіркою певної мови, діалекту або тематичної області.
Токенізація речень
Почнемо з токенізації речень. На щастя, 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)
Як бачите, тут немає нічого складного. Необхідно лише передати рядок із вашим текстом як аргумент функції sent_tokenize(), щоб отримати список речень. Щодо nltk.download('punkt_tab'), ця команда завантажує саме моделі токенізатора "Punkt". Завантажуючи моделі токенізатора Punkt, ви забезпечуєте наявність необхідних даних у NLTK для коректної токенізації речень і слів.
Розділові знаки наприкінці кожного речення включаються до складу речення.
Токенізація слів
У токенізації слів існує кілька поширених методів її виконання; однак ми розглянемо лише два найпоширеніші.
Найпростіший і найочевидніший спосіб — використати функцію split() класу string, яка за замовчуванням використовує символи нового рядка, пробіли та табуляції як роздільники. Проте ви також можете передати довільний рядок як аргумент, щоб використовувати його як роздільник.
123456text = "This is an example of word tokenization." # Convert the text to lowercase text = text.lower() # Word tokenization using split() words = text.split() print(words)
Щоб гарантувати, що токени на кшталт 'This' і 'this' розглядаються як однакові, важливо перетворити рядок у нижній регістр перед токенізацією.
Більш гнучким підходом є використання функції word_tokenize() з модуля tokenize бібліотеки nltk. Ця функція визначає та розділяє слова на основі пробілів і розділових знаків, ефективно розбиваючи речення на окремі слова. Подібно до sent_tokenize(), ця функція приймає рядок як аргумент.
Порівняймо цей підхід із використанням методу split(). Нижче наведено приклад із використанням word_tokenize():
12345678from 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)
Тепер розглянемо, як метод split() працює з тим самим текстом:
12345text = "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)
У нашому прикладі word_tokenize(), на відміну від split(), коректно визначає розділові знаки та спеціальні символи як окремі токени. Він правильно відокремлює знак долара від числа та розпізнає крапки як окремі токени. Така деталізована токенізація є критично важливою для багатьох завдань НЛП, де точне розмежування слів і розділових знаків може суттєво вплинути на точність аналізу та отримані висновки.
Дякуємо за ваш відгук!