Практические примеры для этапа очистки данных


1.2.1 Удаление HTML-тегов и ненужных элементов


Пример: Очистка выгрузки с корпоративного сайта


Ваши данные включают статьи с HTML-тегами, ссылками и ненужными стилями. Используйте `BeautifulSoup` для автоматической очистки контента:


```python


from bs4 import BeautifulSoup

import os

def clean_html_file(filepath):

with open(filepath, "r", encoding="utf-8") as file:

html_content = file.read()

soup = BeautifulSoup(html_content, "html.parser")

clean_text = soup.get_text()

return clean_text.strip()


# Пример применения для директории

directory = "./data"

for filename in os.listdir(directory):

if filename.endswith(".html"):

cleaned_text = clean_html_file(os.path.join(directory, filename))

with open(f"./cleaned/{filename.replace('.html', '.txt')}", "w", encoding="utf-8") as clean_file:

clean_file.write(cleaned_text)


```


Этот скрипт обработает все HTML-файлы, извлекая только текстовый контент.


1.2.2 Фильтрация дублирующихся текстов


Пример: Исключение одинаковых статей из нескольких источников


Если в базе обнаруживаются дублирующие тексты, используйте хэширование для их удаления.


```python


import hashlib

def remove_duplicates(texts):

unique_texts = {}

for text in texts:

text_hash = hashlib.md5(text.encode()).hexdigest()

if text_hash not in unique_texts:

unique_texts[text_hash] = text

return list(unique_texts.values())

texts = ["Текст 1…", "Текст 2…", "Текст 1…"]

unique_texts = remove_duplicates(texts)

print(unique_texts)


```


Этот код сохранит только уникальные тексты, минимизируя объем данных.


1.2.3 Нормализация текста


Пример: Приведение текстов к единому формату


Для унификации данных выполните нормализацию текста: удаление стоп-слов, специальных символов и приведение к нижнему регистру.


```python


import re

import nltk

from nltk.corpus import stopwords

nltk.download('stopwords')

stop_words = set(stopwords.words('russian'))

def normalize_text(text):

text = text.lower()


# Приведение к нижнему регистру

text = re.sub(r'[^\w\s]', '', text)


# Удаление специальных символов

tokens = text.split()

filtered_tokens = [word for word in tokens if word not in stop_words]


# Удаление стоп-слов

return " ".join(filtered_tokens)

text = "Пример текста: как удалить лишние символы и нормализовать данные!"

normalized_text = normalize_text(text)

print(normalized_text)


```


Результат: `"пример текста удалить лишние символы нормализовать данные"`


1.2.4 Автоматизация процесса очистки


Пример: Скрипт для обработки всех файлов в папке


Создайте скрипт, который автоматически выполняет весь процесс очистки – удаляет шумы, фильтрует дубли и нормализует данные:


```python


import os

def process_files(input_dir, output_dir):

for filename in os.listdir(input_dir):

with open(os.path.join(input_dir, filename), "r", encoding="utf-8") as file:

raw_text = file.read()


# Очистка данных

clean_text = normalize_text(clean_html_file(raw_text))


# Сохранение результата

with open(os.path.join(output_dir, filename), "w", encoding="utf-8") as clean_file:

clean_file.write(clean_text)

process_files("./raw_data", "./cleaned_data")


```


Этот инструмент автоматизирует обработку данных для всех текстов в указанной директории.


1.2.5 Инструменты для ускорения обработки больших объемов данных


Пример: Использование `spaCy` для масштабных операций


Если объем данных велик, подключите `spaCy` для ускорения обработки:


```python


import spacy

nlp = spacy.load("ru_core_news_sm")

def process_with_spacy(text):

doc = nlp(text.lower())

return " ".join([token.text for token in doc if not token.is_stop and not token.is_punct])

text = "Когнитивное программирование – это подход, направленный на оптимизацию работы сознания."

processed_text = process_with_spacy(text)

print(processed_text)


```


Результат: `"когнитивное программирование подход направленный оптимизацию работы сознания"`


Эти примеры демонстрируют, как автоматизировать и оптимизировать процесс очистки данных для подготовки качественного материала, который станет основой для работы RAG и LLM.

Загрузка...