"Обработка естественного языка"
Как быстро предварительно обработать и визуализировать текстовые данные с помощью TextHero
Краткое введение в библиотеку TextHero для быстрой предварительной обработки и визуализации текстовых данных в Python
Когда мы работаем над любым проектом или конкурсом НЛП, мы тратим большую часть своего времени на предварительную обработку текста, такую как удаление цифр, знаков препинания, стоп-слов, пробелов и т. Д., А иногда и на визуализацию. После экспериментов TextHero
с парой наборов данных НЛП я обнаружил, что эта библиотека чрезвычайно полезна для предварительной обработки и визуализации. Это сэкономит нам время на написание пользовательских функций. Вы не взволнованы !!? Итак, приступим.
Мы применим методы, которые собираемся изучить в этой статье, к набору данных Kaggle Spooky Author Identification
. Вы можете найти набор данных здесь. Полный код приведен в конце статьи.
Примечание. TextHero все еще находится в стадии бета-тестирования. Библиотека может претерпеть серьезные изменения. Поэтому некоторые из приведенных ниже фрагментов кода или функций могут быть изменены.
Установка
pip install texthero
Предварительная обработка
Как следует из названия, для очистки текста используется метод clean
. По умолчанию метод clean
применяет к тексту 7 default pipelines
.
from texthero import preprocessing df[‘clean_text’] = preprocessing.clean(df[‘text’])
- fillna (s)
- строчные буквы
- remove_digits ()
- remove_punctuation ()
- remove_diacritics ()
- remove_stopwords ()
- remove_whitespace ()
Мы можем подтвердить используемые по умолчанию конвейеры с помощью следующего кода:
Помимо вышеуказанных 7 конвейеров по умолчанию, TextHero
предоставляет гораздо больше конвейеров, которые мы можем использовать. Смотрите полный список здесь с описаниями. Это очень полезно, поскольку мы имеем дело со всем этим во время предварительной обработки текста.
Исходя из наших требований, мы также можем иметь собственные конвейеры, как показано ниже. В этом примере мы используем два конвейера. Однако мы можем использовать столько конвейеров, сколько захотим.
from texthero import preprocessing custom_pipeline = [preprocessing.fillna, preprocessing.lowercase] df[‘clean_text’] = preprocessing.clean(df[‘text’], custom_pipeline)
НЛП
На данный момент эта функция NLP предоставляет только методы named_entity
и noun_phrases
. См. Пример кода ниже. Поскольку TextHero
все еще находится в стадии бета-тестирования, я полагаю, что дополнительные функции будут добавлены позже.
именованный объект
s = pd.Series(“Narendra Damodardas Modi is an Indian politician serving as the 14th and current Prime Minister of India since 2014”) print(nlp.named_entities(s)[0]) Output: [('Narendra Damodardas Modi', 'PERSON', 0, 24), ('Indian', 'NORP', 31, 37), ('14th', 'ORDINAL', 64, 68), ('India', 'GPE', 99, 104), ('2014', 'DATE', 111, 115)]
словосочетания с существительными
s = pd.Series(“Narendra Damodardas Modi is an Indian politician serving as the 14th and current Prime Minister of India since 2014”) print(nlp.noun_chunks(s)[0]) Output: [(‘Narendra Damodardas Modi’, ‘NP’, 0, 24), (‘an Indian politician’, ‘NP’, 28, 48), (‘the 14th and current Prime Minister’, ‘NP’, 60, 95), (‘India’, ‘NP’, 99, 104)]
Представление
Эта функция используется для отображения текстовых данных в vectors
(Term Frequency, TF-IDF), для clustering
(kmeans, dbscan, meanshift), а также для dimensionality reduction
(PCA, t-SNE, NMF).
Давайте посмотрим на пример с TF-TDF
и PCA
в наборе данных Spooky по идентификации авторов.
train['pca'] = ( train['text'] .pipe(preprocessing.clean) .pipe(representation.tfidf, max_features=1000) .pipe(representation.pca) ) visualization.scatterplot(train, 'pca', color='author', title="Spooky Author identification")
Визуализация
Эта функция используется для построения диаграмм рассеяния, облака слов, а также для получения первых слов из текста. См. Примеры ниже.
Пример диаграммы рассеяния
train['tfidf'] = ( train['text'] .pipe(preprocessing.clean) .pipe(representation.tfidf, max_features=1000) ) train['kmeans_labels'] = ( train['tfidf'] .pipe(representation.kmeans, n_clusters=3) .astype(str) ) train['pca'] = train['tfidf'].pipe(representation.pca) visualization.scatterplot(train, 'pca', color='kmeans_labels', title="K-means Spooky author")
Пример Wordcloud
from texthero import visualization visualization.wordcloud(train[‘clean_text’])
Пример популярных слов
Полный код
Заключение
Мы рассмотрели большинство функций, предоставляемых TextHero
. За исключением функциональности НЛП, я обнаружил, что остальные функции действительно полезны, и мы можем попробовать их использовать в следующем проекте НЛП.
Чтобы читать больше таких интересных статей о Python и Data Science, подпишитесь на мой блог www.pythonsimplified.com. Вы также можете связаться со мной в LinkedIn.