5 простых способов выполнить токенизацию в Python
Токенизация — это процесс разделения строки на токены или «более мелкие части». В контексте обработки естественного языка (NLP) токенами обычно являются слова, знаки препинания и числа. Токенизация — важный этап предварительной обработки для многих задач НЛП, поскольку позволяет работать с отдельными словами и символами, а не с необработанным текстом.
В этой статье мы рассмотрим пять способов выполнения токенизации в Python. Мы начнем с самого простого метода, используя функцию Split(), а затем перейдем к более сложным методам с использованием библиотек и модулей, таких как nltk, re, string и shlex.
Использование метода Split()
Метод Split() — это встроенная функция класса Python Python, которая позволяет разбить строку на список подстрок на основе указанного разделителя. Вот пример того, как его использовать —
text = "This is a sample text"
tokens = text.split(" ")
print(tokens)
Этот код разделит текст строки на символ пробела, и полученные токены будут
['This', 'is', 'a', 'sample', 'text'].
Вы также можете указать несколько разделителей, передав список строк методу Split(). Например —
text = "This is a sample, text with punctuation!"
tokens = text.split([" ", ",", "!"])
print(tokens)
Это разделит текст строки на пробелы, запятые и восклицательные знаки, в результате чего появятся токены ['This', 'is', 'a', 'sample', '', 'text', 'with', 'пунктуация'. , '']. Обратите внимание, что разделители также включены в список токенов в виде пустых строк.
Одним из ограничений метода Split() является то, что он позволяет разбивать строку только на основе фиксированного набора разделителей. Если вы хотите разбить строку на более сложные шаблоны, например слова или числа, вам придется использовать более продвинутый метод.
Использование библиотеки nltk
Natural Language Toolkit (nltk) — популярная библиотека Python для работы с данными человеческого языка. Он предоставляет несколько функций токенизации, которые можно использовать для разделения строк на токены на основе различных критериев.
Чтобы использовать библиотеку nltk, вам необходимо сначала ее установить. Вы можете сделать это, выполнив следующую команду –
pip install nltk
После установки nltk вы можете использовать функцию word_tokenize() для разделения строки на токены на основе границ слов:
import nltk
text = "This is a sample text"
tokens = nltk.word_tokenize(text)
print(tokens)
Это даст тот же результат, что и метод Split() выше.
Библиотека nltk также предоставляет ряд других функций токенизации, таких как send_tokenize(), которые разбивают текст на предложения.
Пример
Давайте посмотрим пример –
from nltk.tokenize import sent_tokenize
# Define the text to be tokenized
text = "This is an example sentence for tokenization. And this is another sentence"
# Tokenize the text into sentences
sentences = sent_tokenize(text)
print(sentences)
Выход
Это выведет список предложений –
['This is an example sentence for tokenization.', 'And this is another sentence']
Пример
Мы также можем токенизировать текст, используя метод word_tokenize() из модуля nltk.tokenize следующим образом:
from nltk.tokenize import word_tokenize
# Define the text to be tokenized
text = "This is an example sentence for tokenization."
# Tokenize the text into words
words = word_tokenize(text)
print(words)
Выход
Это также выведет список слов –
['This', 'is', 'an', 'example', 'sentence', 'for', 'tokenization', '.']
Как видите, метод word_tokenize() разбивает текст на отдельные слова, как и метод nltk.word_tokenize().
Пример
Библиотека NLTK также предоставляет класс TweetTokenizer, который специально разработан для токенизации твитов (коротких текстовых сообщений в социальной сети Twitter). Он работает аналогично методу word_tokenize(), но учитывает особенности твитов, такие как хэштеги, упоминания и смайлы.
Вот пример использования TweetTokenizer:
import nltk
# Download the NLTK tokenizer
nltk.download('punkt')
from nltk.tokenize import TweetTokenizer
# Define the text to be tokenized
tweet = "This is an example tweet with #hashtag and @mention. 😊"
# Create a TweetTokenizer object
tokenizer = TweetTokenizer()
# Tokenize the text
tokens = tokenizer.tokenize(tweet)
print(tokens)
Выход
Это даст следующий результат:
['This', 'is', 'an', 'example', 'tweet', 'with', '#hashtag', 'and', '@mention', '😊']
Как видите, TweetTokenizer не только разбивает текст на отдельные слова, но и сохраняет хэштеги и упоминания как отдельные токены. Кроме того, он может обрабатывать смайлы, смайлики и другие специальные символы, которые обычно используются в твитах.
Это может быть полезно, если вы работаете с данными Твиттера и хотите проанализировать определенные аспекты твитов, такие как хэштеги и упоминания.
Использование регулярных выражений
Регулярные выражения — это мощный инструмент для сопоставления строк и манипулирования ими, и их можно использовать для выполнения самых разных задач токенизации.
Пример
Давайте посмотрим пример использования регулярных выражений для выполнения токенизации в Python —
import re
text = "This is a sample text"
# Split on one or more whitespace characters
pattern = r"\s+"
tokens = re.split(pattern, text)
print(tokens)
# Split on words (any sequence of characters that are not whitespace)
pattern = r"\S+"
tokens = re.split(pattern, text)
print(tokens)
# Split on numbers (any sequence of digits)
pattern = r"\d+"
tokens = re.split(pattern, text)
print(tokens)
В этом коде у нас есть три раздела:
-
В первом разделе используется шаблон регулярного выражения, который соответствует одному или нескольким символам пробелов, а результирующие токены представляют собой слова в строке.
Во втором разделе используется шаблон регулярного выражения, который соответствует любой последовательности символов, кроме пробелов, в результате чего получается список отдельных символов.
В третьем разделе используется шаблон регулярного выражения, который соответствует любой последовательности цифр, а результирующими токенами являются слова и знаки препинания в строке.
Выход
Когда вы запустите этот код, он выдаст следующий результат:
['This', 'is', 'a', 'sample', 'text']
['', ' ', ' ', ' ', ' ', '']
['This is a sample text']
Использование строкового модуля
Строковый модуль в Python предоставляет ряд функций обработки строк, включая класс Template, который можно использовать для токенизации строки.
Чтобы использовать класс Template, вам необходимо импортировать строковый модуль и определить строку шаблона с заполнителями для токенов, которые вы хотите извлечь. Например —
import string
text = "This is a $token text"
template = string.Template(text)
Затем вы можете использовать метод replace(), чтобы заменить заполнители фактическими значениями и разделить полученную строку на символ пробела —
tokens = template.substitute({"token": "sample"}).split(" ")
print(tokens)
Это заменит заполнитель $token на слово «образец» и разделит полученную строку на символ пробела, в результате чего появятся токены ['This', is', 'a', 'sample', 'text'].
Класс Template полезен для токенизации строк с переменными значениями, например шаблонов электронных писем или сообщений.
Использование модуля shlex
Модуль shlex предоставляет лексический анализатор синтаксиса в стиле оболочки. Его можно использовать для разделения строки на токены аналогично тому, как это делает оболочка.
Чтобы использовать модуль shlex, вам необходимо сначала его импортировать —
import shlex
text = "This is a sample text"
tokens = shlex.split(text)
print(tokens)
Это разделит строку на пробелы, как метод Split() и библиотека nltk. Модуль shlex полезен для токенизации строк с синтаксисом в стиле оболочки, например аргументов командной строки.
Выход
Когда вы запустите этот код, он выдаст следующий результат:
['This', 'is', 'a', 'sample', 'text']
Заключение
Токенизация — это процесс разделения строки на более мелкие части или токены. В контексте обработки естественного языка токенами обычно являются слова, знаки препинания и числа. Токенизация — важный этап предварительной обработки для многих задач НЛП, поскольку позволяет работать с отдельными словами и символами, а не с необработанным текстом.
В этом уроке мы рассмотрели пять способов выполнения токенизации в Python: использование метода Split(), библиотеки nltk, регулярных выражений, строкового модуля и модуля shlex. Каждый из этих методов имеет свои преимущества и ограничения, поэтому важно выбрать тот, который лучше всего соответствует вашим потребностям. Независимо от того, работаете ли вы с простыми строками или сложными данными человеческого языка, Python предоставляет ряд инструментов и библиотек, которые вы можете использовать для эффективной токенизации текста.