Назад

Python для работы с текстами: практический гайд для начинающих

Python – популярный язык программирования для обработки текстовых данных благодаря своей простоте, большому количеству готовых «библиотек» (специальных наборов функций) и активному сообществу разработчиков. Он позволяет легко анализировать тексты, выполнять частотный подсчет слов, переводить тексты, определять тональность и решать многие другие задачи автоматизированно. В сравнении с традиционной работой в Excel, Python не ограничен размером таблиц и сложностью операций: вместо ручного применения формул и фильтров вы пишете короткие программы и получаете результат сразу на любом объеме данных. Например, в Excel доступна функция TRANSLATE() для перевода текста через сервисы Microsoft, но в Python вы можете автоматически переводить целые файлы или потоки текста с помощью библиотек (DeepL API, Google Translate API и т.д.).

Этот гайд поможет понять основные шаги работы с текстом на Python. Он написан простыми словами для гуманитариев и опытных пользователей Excel без опыта программирования. Для каждой задачи приведены понятные объяснения, примеры кода и указания на аналогичные возможности в Excel, где это уместно. А также мы расскажем, какие библиотеки и сервисы использовать.

Установка и первые шаги

Чтобы начать, установите Python. Удобно работать в Jupyter Notebook или Google Colab – там можно писать код и сразу видеть результат. Для большинства задач вам пригодятся следующие библиотеки (их устанавливают командой pip install в командной строке):

  • NLTK, spaCy, TextBlob, pymorphy2 – для лингвистической обработки (токенизация, лемматизация, анализ тональности и др.).
  • pandas – для работы с табличными данными (аналог Excel, но в коде).
  • scikit-learn – для моделей машинного обучения (кластеризация, классификация).
  • gensim, sentence-transformers – для работы с семантическими представлениями текста (word2vec, BERT-эмбеддинги).
  • googletrans (или официальный Google Translate API), deepl – для автоматического перевода текста.
  • re – встроенный модуль Python для регулярных выражений (поиска и замены по шаблону).

Работа с текстом: токенизация и предобработка

Перед любым анализом текста часто выполняют простую предобработку. Это включает в себя: перевод текста в нижний регистр, удаление пунктуации и лишних пробелов, разбиение текста на слова (токенизация), удаление стоп-слов и т.д. В Python с этим помогают встроенные методы строк, регулярные выражения и библиотеки. Например:

import re

text = ”  Привет, мир! Это пример текста.   “

# Убираем лишние пробелы и приводим к нижнему регистру:

text = re.sub(r’\s+’, ‘ ‘, text.strip().lower())

# Разбиваем на слова:

words = re.findall(r’\w+’, text)

print(words)  # [‘привет’, ‘мир’, ‘это’, ‘пример’, ‘текста’]

В Excel для простого разбития текста на слова можно использовать функцию «Текст по столбцам» или формулы (LEFT/MID) с Find/Len, но это неудобно для больших текстов. Python делает это в несколько строк кода.

Частотный анализ слов

Частотный анализ показывает, какие слова или фразы встречаются в тексте чаще всего. Это полезно для понимания темы текста или ключевых слов. В Python это легко сделать с помощью словаря или коллекции Counter из модуля collections:

from collections import Counter

import re

text = “Python прост: Python умеет работать с текстом очень легко!”

words = re.findall(r’\w+’, text.lower())

freq = Counter(words)

print(freq)  # Пример вывода: Counter({‘python’: 2, ‘легко’: 1, ‘простой’: 1, …})

Здесь мы разбили строку на слова и подсчитали их количество. В выводе видно, что слово ‘python’ встретилось два раза. Можно убрать «стоп-слова» (частые служебные слова) или знаки препинания, чтобы учесть только значимые слова.

В Excel частотный анализ можно сделать через сводную таблицу или формулу COUNTIF. Например, скопировать слова в столбец и сделать сводную таблицу, группируя по словам и считая количество. Но при большом тексте это очень трудоемко вручную. Python обрабатывает любую длину текста одинаково просто.

Автоматический перевод

Для автоматического перевода текста на другой язык существуют онлайн-сервисы (DeepL, Google Translate, Yandex) и их API для Python. Например, библиотека googletrans (неофициальный клиент Google Translate) позволяет перевести строку в одну строчку кода:

from googletrans import Translator

translator = Translator()

result = translator.translate(“Привет, мир!”, dest=’en’)

print(result.text)  # Hello world!

Для DeepL есть официальный клиент deepl (нужен бесплатный или платный API-ключ). В Excel есть функция TRANSLATE(), которая использует Microsoft Translator, и можно переводить по ячейке. Но она доступна только в Microsoft 365. В общем случае для перевода больших текстов из Excel обычно копируют текст в веб-переводчик или пишут макросы. Python же может автоматически переводить тысячи предложений с минимальными усилиями.

Советы по библиотекам: используйте googletrans для простых переводов (особенно в учебных примерах), или официальные API: Google Cloud Translation API или DeepL API, если нужна стабильность и юридическая чистота.

Анализ тональности (Sentiment Analysis)

Анализ тональности определяет, передаёт ли текст положительное, отрицательное или нейтральное настроение. Например, отзывы пользователей можно автоматически разделить на «довольных» и «недовольных». Для таких задач в Python есть библиотеки TextBlob и VADER. Они достаточно просты: достаточно нескольких строк кода, чтобы оценить тональность предложения:

from textblob import TextBlob

text = “Я очень доволен результатом работы.”

blob = TextBlob(text)

print(blob.sentiment.polarity)  # число от -1 (негатив) до +1 (позитив)

Здесь polarity = 1 означает очень положительный тон. TextBlob поддерживает английский язык «из коробки». Для русского можно использовать библиотеки на основе нейросетей (например, DeepPavlov) или переводить текст на английский перед анализом.

В Excel анализа тональности нет встроенного, разве что вручную искать «ключевые слова» при помощи формул (таких, как IF + SEARCH), что очень ограничено. Python с готовыми библиотеками выполняет это быстрее.

Кластеризация текстов

Если у вас большой набор разных текстов (например, новостей или отзывов), можно кластеризовать их – то есть автоматически разбить на группы по схожей теме. Так вы найдете скрытые категории без ручного чтения всего корпуса. Пример (очень упрощенный): представьте, что у нас есть список коротких предложений:

from sklearn.feature_extraction.text import TfidfVectorizer

from sklearn.cluster import KMeans

docs = [

    “Я люблю кошек и люблю играть с ними.”,

    “Собака — лучший друг человека.”,

    “Кошки мурлыкают.”,

    “Собаки лают и охраняют дом.”

]

vectorizer = TfidfVectorizer(stop_words=’russian’)

X = vectorizer.fit_transform(docs)

kmeans = KMeans(n_clusters=2, random_state=0).fit(X)

print(kmeans.labels_)  # например, [0 1 0 1]

Модель KMeans разделит тексты на 2 кластера: возможно, все предложения про кошек попадут в один кластер, а про собак – в другой. После кластеризации можно автоматически получить «описание» кластера, просмотрев самые частые слова в нём. Как указывает источник, такой анализ помогает быстро понять содержание больших массивов текстов.

В Excel подобное выполнить затруднительно – он не умеет автоматически группировать произвольные тексты. Для кластеризации и анализа больших объемов текстов удобнее Python и библиотеки машинного обучения (например, scikit-learn или tensorflow).

Морфологический анализ и лемматизация

Морфологический анализ – определение для каждого слова его основы (леммы), грамматической формы и части речи. Особенно важно для русского языка со сложной формой слов. В Python есть русскоязычные аналоги NLTK – например, pymorphy2. Пример:

from pymorphy2 import MorphAnalyzer

morph = MorphAnalyzer()

word = “гулял”

parsed = morph.parse(word)[0]

print(parsed.normal_form, parsed.tag.POS)  # гулять VERB (глагол)

Здесь мы получили нормальную форму «гулять» и определили, что слово – глагол. Также pymorphy умеет склонять слово в другие падежи, числа и т.д. (например, parsed.inflect({“plur”, “gent”}) вернет форму «гуляли»). Такие операции вручную в Excel проводить невозможно. Для английского языка похожие функции есть в nltk (WordNetLemmatizer) или spaCy (модель en_core_web_sm).

Библиотека pymorphy2 – пример морфологического анализатора для русского языка. Она написана на Python и достаточно быстрая.

Выделение именованных сущностей (NER)

NER (Named Entity Recognition) – это нахождение в тексте имен собственных, таких как имена людей, названия компаний, географические объекты и т.д. Например, из текста «Александр Верещагин посетил Москву» нужно извлечь «Александр Верещагин» (PERSON) и «Москву» (LOCATION).

Самый удобный инструмент – библиотека spaCy. Для английского языка она умеет выделять десятки типов сущностей. Пример кода (на английском):

import spacy

nlp = spacy.load(“en_core_web_sm”)

doc = nlp(“Apple Inc. is based in Cupertino, California.”)

for ent in doc.ents:

    print(ent.text, ent.label_)  # Apple Inc. ORG, Cupertino GPE, California GPE

.

Семантическое сравнение текстов

Для оценки, насколько близки по смыслу два текста или слова, в Python используют семантические векторы (эмбеддинги). Например, через библиотеку sentence-transformers можно получить вектор предложения и измерить косинусную близость:

from sentence_transformers import SentenceTransformer

from sklearn.metrics.pairwise import cosine_similarity

model = SentenceTransformer(‘paraphrase-multilingual-MiniLM-L12-v2’)

sentences = [“Я люблю кошек”, “Мне нравятся питомцы”]

emb = model.encode(sentences)

sim = cosine_similarity([emb[0]], [emb[1]])

print(sim[0][0])  # число от 0 до 1, где 1 – тексты идентичны

Чем ближе значение к 1, тем более похожи тексты по смыслу. Здесь снова пригодятся специализированные библиотеки: Word2Vec, FastText (генерируют вектор для каждого слова) или современные трансформеры (BERT-подобные модели) из transformers/sentence-transformers.

Классификация и категоризация текстов

Классификация текстов позволяет автоматически отнести текст к одной из заранее заданных категорий. Например, определить тему документа («спортивный», «финансовый», «политический») или тон («позитивный/негативный»). Для этого сначала текст обрабатывают (как в предыдущих разделах), затем превращают в числовой вид, и обучают модель.

Пример: пусть у нас есть набор новостных заголовков и их категории (например, «спорт», «бизнес»). Мы можем обучить простую модель:

from sklearn.feature_extraction.text import TfidfVectorizer

from sklearn.naive_bayes import MultinomialNB

docs = [“Матч закончился со счетом…”, “Акции компании подорожали…”]

labels = [“Спорт”, “Экономика”]

vectorizer = TfidfVectorizer(stop_words=’russian’)

X = vectorizer.fit_transform(docs)

clf = MultinomialNB().fit(X, labels)

print(clf.predict(vectorizer.transform([“Новая встреча команд пройдет завтра”])))

Модель может выдать категорию «Спорт», если текст про матч, и «Экономика», если про акции. Как отмечено в источнике, алгоритмы TF-IDF + Naive Bayes или SVM – распространенный и эффективный метод классификации текста.

В Excel можно лишь вручную помечать категории (например, добавлять колонку «тема» и через фильтр смотреть распределение). Для автоматического обучения и предсказания Excel не годится. Python и scikit-learn здесь – самое простое решение.

Часто используемые библиотеки и сервисы

  • NLTK – классическая библиотека для NLP в Python. Содержит токенизаторы, стоп-слова, классификаторы. Подойдет для простых задач и учебы.
  • spaCy – современная библиотека для быстрого NLP: токенизация, POS-теггинг, NER, word vectors. Оптимизирована для производительности. Хорошо подходит для английского и других языков, есть модели для русского.
  • TextBlob – простой интерфейс для анализа тональности и исправления текста (английский язык).
  • pymorphy2 – морфологический анализатор для русского языка: лемматизация, определение частей речи, склонений.
  • scikit-learn – стандартная библиотека для машинного обучения: содержит методы кластеризации, классификации, TF-IDF и многое другое.
  • gensim – для обучения и работы с тематическими моделями (LDA) и векторными представлениями (Word2Vec, Doc2Vec).
  • sentence-transformers или transformers (HuggingFace) – для семантических эмбеддингов текста (на базе BERT, GPT и др.).
  • DeepPavlov, Natasha – русскоязычные NLP-библиотеки, включают NER и QA-модели.
  • Google Translate API, DeepL API, Yandex Translate API – платные сервисы перевода, дают самый качественный перевод (есть бесплатные ограниченные квоты). Для учебных целей можно использовать googletrans (бесплатно, но со своими ограничениями).

Аналоги в Excel

Мы уже видели несколько примеров: с помощью функций и сводных таблиц в Excel можно посчитать частоту слов или применить простой перевод (например, функция TRANSLATE()). Однако Excel не рассчитан на сложный текстовый анализ. Например, кластеризацию, семантическое сравнение или выделение именованных сущностей он не выполняет. Даже анализ тональности в Excel требовал бы создания сложных формул или макросов. Python в этих случаях дает готовые инструменты.

Где-то Excel может выручить: например, обычный перевод небольших текстов через встроенные функции (для Office 365), базовый частотный анализ через сводные таблицы или поиск/замену. Но при работе с большими корпусами текстов, регулярными обновлениями данных и нестандартными задачами (NER, кластеризация и пр.) Python в разы эффективнее.

Надеемся, этот гайд даст вам представление о том, как с помощью Python автоматизировать работу с текстом. Начните с простых примеров: установите библиотеку, поэкспериментируйте с кодом, постепенно переходите к более сложным задачам. Постепенно вы сможете решать то, что в Excel было бы крайне сложно или невозможно. Успехов в изучении Python и обработке текстов!

Дело восприятия
Дело восприятия
https://vospriyatie.com
«Дело Восприятия» – маркетинговое бюро «эпохи 30-х», которое сочетает креатив классической рекламы прошлого века с актуальными цифровыми инструментами. Наша миссия – помогать компаниям выделяться в информационном шуме и достигать реальных бизнес-результатов. Мы опираемся на авторскую методику латерального маркетинга ДКЛМЦ, проверенную тревожным временем, экономическими кризисами и опытом в работе с рынками Юго-Восточной Азии.

Ничего серьезного, но по закону надо предупредить Политика конфиденциальности