locgi / make_corpus.py
Mauricio-100's picture
Upload make_corpus.py with huggingface_hub
12ec5c8 verified
Raw
History Blame Contribute Delete
9.16 kB
# make_corpus.py - Version avec Wikipedia améliorée
import json
import wikipedia
import random
import re
wikipedia.set_lang("fr")
# ==========================================
# 1. CORPUS MANUEL ÉTOFFÉ
# ==========================================
# Niveau 1 : Bases (phrases très simples)
niveau_1 = [
"locgi apprend.",
"gopu.inc innove.",
"le code tourne.",
"pytorch calcule.",
"un tenseur change.",
"python est simple.",
"locgi est une ia.",
"le systeme avance.",
"bonjour tout le monde.",
"comment ca va aujourdhui.",
"le soleil brille.",
"la lune est belle.",
"les etoiles scintillent.",
"le vent souffle.",
"la pluie tombe.",
"le chat dort.",
"le chien court.",
"les oiseaux chantent.",
"le jardin est vert.",
"la mer est bleue.",
]
# Niveau 2 : Intermédiaire (concepts et actions)
niveau_2 = [
"locgi est un modele de langage rapide.",
"gopu.inc developpe des outils de securite.",
"le reseau de neurones ajuste ses poids.",
"les fichiers safetensors stockent les tenseurs.",
"un developpeur ecrit du code en python.",
"l'apprentissage par cursus facilite la convergence du modele.",
"le fichier de configuration valide les donnees.",
"locgi est developpe par Mauricio Mangituka en 2026.",
"un modele de langage comprend le texte.",
"le deep learning utilise des reseaux de neurones.",
"les donnees d'entrainement sont importantes.",
"la performance du modele s'ameliorer avec le temps.",
"le football est un sport collectif populaire.",
"le basket se joue avec un ballon et un panier.",
"la musique adoucit les moeurs.",
"l'art est une forme d'expression humaine.",
"la science explore l'univers.",
"la technologie evolue rapidement.",
"les ordinateurs sont partout.",
"internet connecte le monde.",
]
# Niveau 3 : Complexe (phrases longues avec contexte)
niveau_3 = [
"le modele locgi analyse chaque caractere pour predire la suite du texte.",
"gopu.inc cree des architectures intelligentes adaptees aux environnements de developpement.",
"les matrices imbriquees calculent les probabilites de chaque lettre du dictionnaire unique.",
"optimiser les hyperparametres permet d'eviter les minima locaux pendant l'entrainement progressif.",
"une intelligence artificielle peut apprendre a partir de donnees textuelles structurees.",
"le traitement du langage naturel permet aux machines de comprendre le langage humain.",
"les reseaux de neurones recurrents sont adaptes pour les sequences de texte.",
"le machine learning transforme la facon dont nous interagissons avec la technologie.",
"les donnees de qualite sont essentielles pour un apprentissage efficace.",
"la puissance de calcul des GPU accelere l'entrainement des modeles.",
]
# Niveau 4 : Dialogues et questions/réponses
niveau_4 = [
"bonjour comment ca va.",
"ca va bien merci et toi.",
"je vais bien merci de demander.",
"quelle est la capitale de la france.",
"paris est la capitale de la france.",
"combien font deux plus deux.",
"deux plus deux font quatre.",
"qui est le president de la france.",
"emmanuel macron est le president de la france.",
"j'aime la programmation.",
"python est un langage de programmation puissant.",
"pytorch est une bibliotheque pour l'apprentissage profond.",
"comment s'appelle le soleil.",
"le soleil s'appelle le soleil.",
"pourquoi le ciel est bleu.",
"le ciel est bleu a cause de la diffusion de la lumiere.",
"ou se trouve la tour eiffel.",
"la tour eiffel se trouve a paris.",
"quand est ne locgi.",
"locgi est ne en 2026.",
"que signifie gopu.inc.",
"gopu.inc est une entreprise qui developpe des ia.",
]
# ==========================================
# 2. RÉCUPÉRATION DE DONNÉES WIKIPEDIA AMÉLIORÉE
# ==========================================
def clean_text(text):
"""Nettoie le texte Wikipedia"""
# Enlever les références [1], [2], etc.
text = re.sub(r'\[\d+\]', '', text)
# Enlever les parenthèses inutiles
text = re.sub(r'\([^)]*\)', '', text)
# Remplacer les sauts de ligne
text = text.replace('\n', ' ')
return text
def get_wikipedia_data(sujets, sentences=4):
"""Récupère des résumés Wikipedia avec meilleure gestion des erreurs"""
data = []
# Mapping des sujets pour mieux chercher
mapping = {
"intelligence artificielle": ["intelligence artificielle", "IA"],
"apprentissage profond": ["apprentissage profond", "deep learning"],
"reseau de neurones": ["réseau de neurones", "neurone"],
"python": ["Python", "langage python"],
"technologie": ["technologie", "innovation"],
"science": ["science", "sciences"],
"informatique": ["informatique", "ordinateur"],
"football": ["football", "sport"],
"paris": ["Paris", "ville de Paris"],
"programmation": ["programmation", "code informatique"],
}
for sujet in sujets:
trouve = False
# Essayer avec le sujet original puis ses variantes
sujets_a_tester = [sujet]
if sujet in mapping:
sujets_a_tester.extend(mapping[sujet])
for test_sujet in sujets_a_tester:
try:
print(f" Essai: {test_sujet}...")
page = wikipedia.page(test_sujet)
summary = page.summary
# Nettoyer
summary = clean_text(summary)
# Découper en phrases
phrases = summary.split('. ')
phrases = [p.strip() for p in phrases if len(p.strip()) > 20]
# Prendre les N premières phrases
for phrase in phrases[:sentences]:
if len(phrase) > 10:
# S'assurer que la phrase finit par un point
if not phrase.endswith('.'):
phrase += '.'
data.append(phrase.lower())
print(f" ✓ Wikipedia: {sujet} ajouté ({len(phrases[:sentences])} phrases)")
trouve = True
break
except wikipedia.exceptions.DisambiguationError as e:
# Si ambigu, prendre le premier résultat
try:
premier = e.options[0]
print(f" → Ambigu, essai: {premier}")
page = wikipedia.page(premier)
summary = page.summary
summary = clean_text(summary)
phrases = summary.split('. ')
phrases = [p.strip() for p in phrases if len(p.strip()) > 20]
for phrase in phrases[:sentences]:
if len(phrase) > 10:
if not phrase.endswith('.'):
phrase += '.'
data.append(phrase.lower())
print(f" ✓ Wikipedia: {sujet} ajouté via {premier}")
trouve = True
break
except:
pass
except wikipedia.exceptions.PageError:
print(f" ✗ Page non trouvée: {test_sujet}")
except Exception as e:
print(f" ✗ Erreur: {e}")
if not trouve:
print(f" ✗ Wikipedia: {sujet} non trouvé")
return data
# Liste des sujets Wikipedia à récupérer
sujets_wiki = [
"intelligence artificielle",
"apprentissage profond",
"reseau de neurones",
"python",
"technologie",
"science",
"informatique",
"football",
"paris",
"programmation",
]
# ==========================================
# 3. ASSEMBLAGE DU CORPUS FINAL
# ==========================================
print("Récupération des données Wikipedia...")
print("-" * 40)
donnees_wiki = get_wikipedia_data(sujets_wiki, sentences=3)
print("-" * 40)
# Assemblage complet
corpus_complet = niveau_1 + niveau_2 + niveau_3 + niveau_4 + donnees_wiki
# Mélanger un peu
random.shuffle(corpus_complet)
# Écriture dans le fichier
nom_fichier = "corpus.txt"
with open(nom_fichier, "w", encoding="utf-8") as f:
for phrase in corpus_complet:
f.write(phrase + "\n")
print("\n" + "=" * 50)
print(f"[SUCCÈS] Fichier '{nom_fichier}' généré !")
print(f"Nombre total d'exemples : {len(corpus_complet)}")
print(f" - Niveau 1 (Bases) : {len(niveau_1)}")
print(f" - Niveau 2 (Intermédiaire) : {len(niveau_2)}")
print(f" - Niveau 3 (Complexe) : {len(niveau_3)}")
print(f" - Niveau 4 (Dialogues) : {len(niveau_4)}")
print(f" - Wikipedia : {len(donnees_wiki)}")
print("=" * 50)
# Afficher quelques exemples Wikipedia
if donnees_wiki:
print("\nExemples de données Wikipedia ajoutées:")
for i in range(min(3, len(donnees_wiki))):
print(f" {i+1}. {donnees_wiki[i][:80]}...")