"Обработка естественного языка"

Как быстро предварительно обработать и визуализировать текстовые данные с помощью 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’])
  1. fillna (s)
  2. строчные буквы
  3. remove_digits ()
  4. remove_punctuation ()
  5. remove_diacritics ()
  6. remove_stopwords ()
  7. 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.

использованная литература