1.1.1 Использование внутренних источников
Пример: Обработка архивных документов компании
1. Автоматическое извлечение информации из PDF-файлов:
```python
import PyPDF2
def extract_text_from_pdf(file_path):
with open(file_path, "rb") as file:
reader = PyPDF2.PdfReader(file)
text = ""
for page in reader.pages:
text += page.extract_text()
return text
pdf_text = extract_text_from_pdf("internal_documents.pdf")
print("Извлечённый текст:", pdf_text[:500])
```
2. Классификация данных:
Разделите извлечённый текст на категории:
```python
theoretical = []
practical = []
for line in pdf_text.split("\n"):
if "определение" in line.lower() or "термин" in line.lower():
theoretical.append(line)
elif "пример" in line.lower():
practical.append(line)
print("Теория:", theoretical[:5])
print("Практика:", practical[:5])
```
Результат: Внутренние материалы классифицированы для дальнейшего использования.
1.1.2 Использование внешних источников
Пример: Сбор научных статей с использованием BeautifulSoup
1. Скрейпинг данных из открытых источников:
```python
import requests
from bs4 import BeautifulSoup
def fetch_articles(base_url, keyword):
response = requests.get(f"{base_url}/search?q={keyword}")
soup = BeautifulSoup(response.text, "html.parser")
articles = []
for result in soup.find_all("div", class_="result"):
title = result.find("h2").text
link = result.find("a")["href"]
summary = result.find("p", class_="summary").text
articles.append({"title": title, "link": link, "summary": summary})
return articles
articles = fetch_articles("https://example.com", "когнитивное программирование")
print("Найденные статьи:", articles[:3])
```
2. Проверка лицензий:
Убедитесь, что данные не нарушают авторских прав, проверяя метаданные статьи на открытые лицензии (например, Creative Commons).
Результат: Собраны релевантные статьи из научных источников.
1.1.3 Проверка данных на актуальность и релевантность
Пример: Фильтрация данных по дате и ключевым словам
1. Отфильтруйте устаревшие материалы:
```python
from datetime import datetime
def filter_recent_articles(articles, years=5):
threshold_date = datetime.now().year – years
return [article for article in articles if int(article.get("date", 0)) >= threshold_date]
filtered_articles = filter_recent_articles([
{"title": "Статья 1", "date": "2019"},
{"title": "Статья 2", "date": "2010"}
])
print("Актуальные статьи:", filtered_articles)
```
2. Проверка релевантности по ключевым словам:
```python
keywords = ["когнитивное программирование", "модель", "примеры"]
def filter_by_keywords(articles, keywords):
return [article for article in articles if any(keyword in article["summary"] for keyword in keywords)]
relevant_articles = filter_by_keywords(articles, keywords)
print("Релевантные статьи:", relevant_articles)
```
Результат: Оставлены только актуальные и релевантные материалы.
1.1.4 Организация файлов
Пример: Разделение данных по категориям
1. Структурируйте данные по типам:
```python
def organize_files(data):
categories = {"Теория": [], "Практика": [], "FAQ": []}
for item in data:
if "определение" in item["summary"].lower():
categories["Теория"].append(item)
elif "пример" in item["summary"].lower():
categories["Практика"].append(item)
elif "вопрос" in item["summary"].lower():
categories["FAQ"].append(item)
return categories
structured_data = organize_files(relevant_articles)
print("Структурированные данные:", structured_data)
```
2. Создание файловой структуры:
```python
import os
base_path = "./knowledge_base"
for category in structured_data:
os.makedirs(f"{base_path}/{category}", exist_ok=True)
for i, item in enumerate(structured_data[category]):
with open(f"{base_path}/{category}/doc_{i+1}.txt", "w", encoding="utf-8") as file:
file.write(item["summary"])
```
Результат: Данные распределены по категориям с удобной файловой организацией.
1.1.5 Пример полного процесса сбора данных
Этап 1: Сбор внутренних данных
Извлечены обучающие материалы компании.
Классифицированы на теоретические основы и практические примеры.
Этап 2: Сбор внешних данных
Собраны научные статьи по ключевым словам.
Удалены устаревшие и нерелевантные статьи.
Этап 3: Интеграция в базу знаний
Все данные структурированы по категориям: Теория, Практика, FAQ.
Установлена файловая структура для удобной обработки.
Результат: Получен качественный набор данных для обучения модели и наполнения базы знаний.
Эти подходы обеспечивают системный подход к сбору, проверке и организации данных, что улучшает качество ответов когнитивного тренажера.