Création d'une base de connaissance en Python: Script Python : Extraction + Indexation + Recherche Ce script : Extrait le texte des fichiers .txt, .docx, .pptx Les indexe dans une base locale (ici un simple dictionnaire) Permet la recherche par mots-clés via la console Prérequis # Installe ces bibliothèques si ce n’est pas déjà fait : pip install mysql-connector-python python-docx python-pptx pip install flask # Structure de la Base MySQL Tu peux créer une base nommée knowledge_base avec une table documents : CREATE DATABASE knowledge_base; USE knowledge_base; CREATE TABLE documents ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), content LONGTEXT, file_type VARCHAR(10) ); # Script Flask + MySQL Voici un exemple de script Flask qui : Extrait le contenu d’un fichier L’insère dans MySQL Permet la recherche par mot-clé via une interface web from flask import Flask, request, render_template_string import mysql.connector app = Flask(__name__) # Connexion à MySQL db = mysql.connector.connect( host="localhost", user="root", password="ton_mot_de_passe", database="knowledge_base" ) cursor = db.cursor() # Exemple de contenu à insérer example_title = "Copier/Coller avec Spice Guest Tools" example_content = """ Pour activer la fonction copier/coller entre une machine hôte et une entité il faut installer les spice-guest-tools : A- Windows : 1) S'assurer que l'image ISO "spice_guest_tool.iso" soit présente... ... 2) Installer le paquet : sudo dpkg -i spice-vdagent_0.19.0-2_amd64.deb """ example_type = "txt" # Insérer l'exemple si non présent cursor.execute("SELECT COUNT(*) FROM documents WHERE title = %s", (example_title,)) if cursor.fetchone()[0] == 0: cursor.execute("INSERT INTO documents (title, content, file_type) VALUES (%s, %s, %s)", (example_title, example_content, example_type)) db.commit() # Interface HTML simple HTML_TEMPLATE = """ Recherche Base de Connaissance

Recherche par mot-clé

{% if results %}

Résultats :

{% endif %} """ @app.route("/", methods=["GET", "POST"]) def search(): results = [] if request.method == "POST": keyword = request.form["keyword"] cursor.execute("SELECT title, content FROM documents WHERE content LIKE %s", (f"%{keyword}%",)) results = cursor.fetchall() return render_template_string(HTML_TEMPLATE, results=results) if __name__ == "__main__": app.run(debug=True) # Tester Lance le script : python app.py Va sur http://localhost:5000 Recherche un mot-clé comme copier, spice, Ubuntu, etc. # Code Python: import os from docx import Document from pptx import Presentation import mysql.connector # Connexion à MySQL db = mysql.connector.connect( host="localhost", user="root", password="ton_mot_de_passe", database="knowledge_base" ) cursor = db.cursor() # Dossier contenant les fichiers DATA_FOLDER = "documents" def extract_txt(file_path): with open(file_path, 'r', encoding='utf-8') as f: return f.read() def extract_docx(file_path): doc = Document(file_path) return "\n".join([para.text for para in doc.paragraphs]) def extract_pptx(file_path): prs = Presentation(file_path) text = [] for slide in prs.slides: for shape in slide.shapes: if hasattr(shape, "text"): text.append(shape.text) return "\n".join(text) def insert_into_db(title, content, file_type): cursor.execute("SELECT COUNT(*) FROM documents WHERE title = %s", (title,)) if cursor.fetchone()[0] == 0: cursor.execute("INSERT INTO documents (title, content, file_type) VALUES (%s, %s, %s)", (title, content, file_type)) db.commit() def process_files(): for filename in os.listdir(DATA_FOLDER): path = os.path.join(DATA_FOLDER, filename) if filename.endswith(".txt"): content = extract_txt(path) file_type = "txt" elif filename.endswith(".docx"): content = extract_docx(path) file_type = "docx" elif filename.endswith(".pptx"): content = extract_pptx(path) file_type = "pptx" else: continue insert_into_db(filename, content, file_type) print(f"Importé : {filename}") if __name__ == "__main__": process_files() print("Tous les fichiers ont été importés.")