Вступление
Объем текстовых данных в Интернете значительно увеличился за последние десятилетия. Нет сомнений в том, что обработка такого количества информации должна быть автоматизирована, и пакет TextBlob - один из довольно простых способов выполнить NLP - обработку естественного языка.
Он предоставляет простой API для погружения в общие задачи обработки естественного языка (NLP), такие как тегирование части речи, извлечение именных фраз, токенизация, анализ тональности, классификация, перевод и многое другое.
Никаких специальных технических условий для использования этой библиотеки не требуется. Например, TextBlob применим как для Python 2, так и для Python 3. Если у вас нет под рукой текстовой информации, TextBlob предоставляет необходимые корпуса из базы данных NLTK.
Установка TextBlob
Начнем с установки TextBlob и корпуса NLTK:
$ pip install -U textblob
$ python -m textblob.download_corpora
Примечание. Этот процесс может занять некоторое время из-за большого количества алгоритмов и корпусов, содержащихся в этой библиотеке.
Что такое токенизация?
Прежде чем углубляться в область НЛП, вы также должны уметь распознавать эти ключевые термины:
-
Корпус (или корпус во множественном числе) - это просто определенный набор языковых данных (например, текстов). Корпуса обычно используются, например, для обучения различным моделям классификации текста или анализа тональности.
-
Токен - это последняя строка, которая отделяется от основного текста, или, другими словами, это результат токенизации.
Что такое токенизация?
Токенизация или сегментация слов - это простой процесс разделения предложений или слов из корпуса на небольшие единицы, то есть токены.
Иллюстрацией этого может быть следующее предложение:
-
Исходные данные (корпус): зло, творимое людьми, живет после них.
-
Выход (токены): | | зло | что | мужчины | делать | живет | после | их |
Здесь входное предложение размечено на основе пробелов между словами. Вы также можете токенизировать символы из одного слова (например, яблоко от яблока ) или отделять предложения из одного текста.
Токенизация - один из основных и решающих этапов языковой обработки. Он преобразует неструктурированный текстовый материал в данные. Это может быть использовано в дальнейшем при разработке различных моделей машинного перевода, поисковой оптимизации или различных бизнес-запросов.
Реализация токенизации в коде
Прежде всего, необходимо создать TextBlob
и определить образец
корпуса, который позже будет токенизирован. Например, давайте попробуем
токенизировать часть стихотворения Если написано Р. Киплингом:
from textblob import TextBlob
# Creating the corpus
corpus = '''If you can force your heart and nerve and sinew to serve your turn long after they are gone. And so hold on when there is nothing in you except the Will which says to them: 'Hold on!'
'''
После создания объекта его следует передать в качестве аргумента
конструктору TextBlob
blob_object = TextBlob(corpus)
После создания мы можем выполнять различные операции с этим
blob_object
. Он уже содержит наш корпус, в определенной степени
категоризированный.
Токенизация слов
Наконец, чтобы получить токенизированные слова, мы просто извлекаем
words
для созданного blob_object
. Это дает нам список, содержащий
Word
, которые ведут себя очень похоже на объекты str
from textblob import TextBlob
corpus = '''If you can force your heart and nerve and sinew to serve your turn long after they are gone. And so hold on when there is nothing in you except the Will which says to them: 'Hold on!'
'''
blob_object = TextBlob(corpus)
# Word tokenization of the sample corpus
corpus_words = blob_object.words
# To see all tokens
print(corpus_words)
# To count the number of tokens
print(len(corpus_words))
Команды вывода должны дать вам следующее:
['If', 'you', 'can', 'force', 'your', 'heart', 'and', 'nerve', 'and', 'sinew', 'to', 'serve', 'your', 'turn', 'long', 'after', 'they', 'are', 'gone', 'and', 'so', 'hold', 'on', 'when', 'there', 'is', 'nothing', 'in', 'you', 'except', 'the', 'Will', 'which', 'says', 'to', 'them', 'Hold', 'on']
38
Стоит отметить, что этот подход токенизирует слова, используя SPACE
в
качестве ограничительного символа. Мы можем изменить этот разделитель,
например, на TAB
:
from textblob import TextBlob
from nltk.tokenize import TabTokenizer
corpus = '''If you can force your heart and nerve and sinew to serve your turn long after they are gone. And so hold on when there is nothing in you except the Will which says to them: 'Hold on!'
'''
tokenizer = TabTokenizer()
blob_object = TextBlob(corpus, tokenizer = tokenizer)
# Word tokenization of the sample corpus
corpus_words = blob_object.tokens
# To see all tokens
print(corpus_words)
Обратите внимание, что мы добавили TAB
после первого предложения
здесь. Как выглядит корпус слов примерно так:
['If you can force your heart and nerve and sinew to serve your turn long after they are gone.','And so hold on when there is nothing in you except the Will which says to them: 'Hold on!']
nltk.tokenize
содержит другие параметры токенизации. По умолчанию он
использует SpaceTokenizer
который вам не нужно определять явно, но
можно. Помимо этих двух, он также содержит полезные токенизаторы, такие
как LineTokenizer
, BlankLineTokenizer
и WordPunctTokenizer
.
Полный список можно найти в их документации .
Токенизация предложения
Для токенизации на уровне предложения мы будем использовать тот же
blob_object
. На этот раз вместо words
мы будем использовать атрибут
sentences
Это возвращает список объектов Sentence
from textblob import TextBlob
corpus = '''If you can force your heart and nerve and sinew to serve your turn long after they are gone. And so hold on when there is nothing in you except the Will which says to them: 'Hold on!'
'''
blob_object = TextBlob(corpus)
# Sentence tokenization of the sample corpus
corpus_sentence = blob_object.sentences
# To identify all tokens
print(corpus_sentence)
# To count the number of tokens
print(len(corpus_sentence))
Выход:
[Sentence("If you can force your heart and nerve and sinew to serve your turn long after they are gone"), Sentence("And so hold on when there is nothing in you except the Will which says to them: 'Hold on!")]
2
Заключение
Токенизация - очень важный этап предварительной обработки данных в НЛП, который включает разбиение текста на более мелкие фрагменты, называемые токенами. Эти токены могут быть отдельными словами, предложениями или символами исходного текста.
TextBlob - отличная библиотека для знакомства с НЛП, поскольку она предлагает простой API, который позволяет пользователям быстро переходить к выполнению задач НЛП.
В этой статье мы обсудили только одну из задач НЛП, с которыми имеет дело TextBlob, но в следующей серии мы рассмотрим, как решать более сложные проблемы, такие как работа с перегибами слов, формами множественного и единственного числа, и больше.