Doninha / corpus_utils.py
0danielfonseca's picture
Upload 42 files
cf52a55 verified
from __future__ import annotations
"""
Utilitários de corpus
=====================
Funções para carregar texto de:
- arquivos Markdown/TXT (ex.: README)
- artigo completo em DOCX ("Uma verdadeira Epistemologia para a Inteligência Artificial")
"""
from typing import List
import os
from docx import Document
def read_text_file(path: str, encoding: str = "utf-8") -> str:
if not os.path.exists(path):
raise FileNotFoundError(f"Arquivo de texto não encontrado: {path}")
with open(path, "r", encoding=encoding) as f:
return f.read()
def read_docx_file(path: str) -> str:
if not os.path.exists(path):
raise FileNotFoundError(f"Arquivo DOCX não encontrado: {path}")
doc = Document(path)
parts: List[str] = []
for p in doc.paragraphs:
text = p.text.strip()
if text:
parts.append(text)
return "\n".join(parts)
def load_main_corpus() -> List[str]:
"""
Carrega o corpus principal deste projeto, incluindo materiais do projeto e bases de dados suplementares.
Retorna uma lista de textos (documentos).
"""
base_dir = os.path.dirname(__file__) or "."
readme_path = os.path.join(base_dir, "README.md")
article_path = os.path.join(
base_dir,
"Uma verdadeira Epistemologia para a Inteligência Artificial.docx",
)
extra_paths = [
os.path.join(base_dir, "data", "stanford_encyclopedia", "sep_texts_only.txt"),
os.path.join(base_dir, "philosophy-corpus", "train_philosophy.txt"),
os.path.join(base_dir, "philosophy-corpus", "train.txt"),
]
texts: List[str] = []
if os.path.exists(readme_path):
texts.append(read_text_file(readme_path))
if os.path.exists(article_path):
texts.append(read_docx_file(article_path))
for path in extra_paths:
if os.path.exists(path):
texts.append(read_text_file(path))
if not texts:
raise FileNotFoundError(
"Nenhum corpus encontrado. Certifique-se de que README.md, o artigo DOCX ou os arquivos da base de dados estão disponíveis."
)
return texts