Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации



Вам уже знакомы базовые возможности нейросетей — классификация, генерация текста, поиск. Теперь вы узнаете, как превратить неструктурированный текст (отчёты, статьи, переписку) в таблицы и сводки, которые удобно анализировать, визуализировать и использовать в работе или учёбе.
Эти навыки позволяют:
| Термин | Описание | Пример |
|---|---|---|
| Неструктурированный текст | Текст без чёткой схемы, без фиксированных полей. | Электронные письма, статьи, форумы. |
| Структурированный текст | Текст, где информация уже разбита на ячейки/строки. | CSV‑файл, таблица Excel. |
Неструктурированный текст — это как мешок с разными предметами: в нём есть и книги, и карандаши, и яблоки, но без ярлыков, где что находится. Наша задача — разложить эти предметы по полкам (таблицам) и написать краткое содержание (сводку).
В академической работе это может быть «сколько раз в наборе статей упоминается метод X», а в бизнес‑контексте — «сколько заявок поступило из разных регионов за месяц».
| Подход | Принцип | Плюсы | Минусы |
|---|---|---|---|
| Правила (regex, шаблоны) | Жёсткие шаблоны, ищут фиксированные паттерны. | Прозрачность, быстрый запуск. | Не масштабируется, чувствителен к изменению формата. |
| Классические ML‑модели | Фичи + классификатор (SVM, Random Forest). | Работают на небольших датасетах. | Требуют ручного выбора фичей. |
| Нейросети (BERT, GPT, T5) | Предобученные трансформеры + дообучение на вашей задаче. | Высокая точность, умеют «понимать» контекст. | Требуют GPU/CPU‑мощности, больше данных. |
Для большинства практических задач сегодня нейросети — оптимальный компромисс: они умеют находить сущности, отношения и даже генерировать таблицы «на лету».
spacy с моделью ru_core_news_md. import spacy, pandas as pd
nlp = spacy.load("ru_core_news_md")
doc = nlp("В отчёте от 12.03.2024 указано, что компания «Альфа» получила 1 500 000 руб.")
entities = [(ent.text, ent.label_) for ent in doc.ents]
print(entities) # [('12.03.2024', 'DATE'), ('Альфа', 'ORG'), ('1 500 000 руб', 'MONEY')]
Ключевые термины: токенизация (tokenization, 分词 fēn cí), лемматизация (lemmatization, 词形还原 cí xíng huán yuán), NER (named‑entity recognition, 实体识别 shí tǐ shí bié).
| Колонка | Что хранит | Пример |
|---|---|---|
| Дата | Дата события | 2024‑03‑12 |
| Организация | Название компании/организации | Альфа |
| Сумма | Финансовый показатель | 1500000 |
| Тема | Краткое описание | Продажи |
pandas.DataFrame и экспортировать в CSV/Excel. records = []
for sent in doc.sents:
rec = {"Дата": None, "Организация": None, "Сумма": None, "Тема": None}
for ent in sent.ents:
if ent.label_ == "DATE":
rec["Дата"] = ent.text
elif ent.label_ == "ORG":
rec["Организация"] = ent.text
elif ent.label_ == "MONEY":
rec["Сумма"] = int(ent.text.replace(' ','').replace('руб',''))
# простая эвристика для темы: берём первое глагол‑существительное
rec["Тема"] = sent.text.split()[0]
records.append(rec)
df = pd.DataFrame(records)
print(df.head())
dateparser. groupby. summary = df.groupby('Организация').agg(
total_money=('Сумма', 'sum'),
avg_money=('Сумма', 'mean'),
count=('Сумма', 'count')
).reset_index()
print(summary)
df['Дата'] = pd.to_datetime(df['Дата'], dayfirst=True)
trend = df.set_index('Дата').resample('M')['Сумма'].sum()
trend.plot(kind='line', title='Месячный объём продаж')
Для генерации небольших описаний можно использовать модели‑суммаризаторы (BART, T5).
from transformers import pipeline
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
text = " ".join(df['Тема'].tolist())
summary_text = summarizer(text, max_length=80, min_length=30, do_sample=False)[0]['summary_text']
print(summary_text)
Ключевой термин: агрегация (aggregation, 聚合 jù hé).
| Задача | Библиотека | Пример использования |
|---|---|---|
| Токенизация, NER | spaCy, Stanza | nlp = spacy.load("ru_core_news_md") |
| Табличные операции | pandas, polars | df.groupby(...).agg(...) |
| Суммирование текста | transformers (BART, T5) | pipeline("summarization") |
| Визуализация | matplotlib, seaborn, plotly | trend.plot() |
| Парсинг дат | dateparser | dateparser.parse("12 марта 2024") |
Для более «тяжёлых» проектов (много документов, требование реального времени) стоит рассмотреть Haystack + FAISS для быстрых поисковых индексов, а также LangChain для построения цепочек запросов к LLM‑моделям.
pdfminer.six). sales_q1.xlsx. Совет: если в одном документе несколько секций «Продажи», «Расходы», используйте ключевые фразы (например, «Итого по продажам») как маркеры начала новой записи.
Экстракция сущностей
spacy найдите все даты, организации и суммы. Построение таблицы
Агрегация
Тренд‑анализ
Сводка текста
Выполнив эти упражнения, вы получите готовый «pipeline» от сырого текста до готовой аналитической таблицы и сводки, который можно адаптировать под любые задачи в работе и учёбе. Удачной автоматизации!