Spaces:
Sleeping
Sleeping
| import PyPDF2 | |
| from langchain.text_splitter import RecursiveCharacterTextSplitter | |
| from langchain.document_loaders import TextLoader | |
| from langchain.vectorstores import FAISS | |
| from langchain.embeddings import HuggingFaceEmbeddings | |
| import os | |
| def process_cv(cv_path): | |
| # Extraire le texte du PDF | |
| text = "" | |
| with open(cv_path, 'rb') as file: | |
| pdf_reader = PyPDF2.PdfReader(file) | |
| for page in pdf_reader.pages: | |
| text += page.extract_text() | |
| # Diviser le texte en chunks | |
| text_splitter = RecursiveCharacterTextSplitter( | |
| chunk_size=1000, | |
| chunk_overlap=200 | |
| ) | |
| chunks = text_splitter.split_text(text) | |
| # Créer les embeddings | |
| embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2") | |
| # Créer la base de données vectorielle | |
| db = FAISS.from_texts(chunks, embeddings) | |
| return db | |
| def query_cv(db, question): | |
| # Rechercher dans la base de données | |
| docs = db.similarity_search(question, k=3) | |
| # Extraire le texte des documents les plus pertinents | |
| context = "\n".join([doc.page_content for doc in docs]) | |
| return context | |
| if __name__ == "__main__": | |
| # Chemin absolu vers le CV | |
| cv_path = r"D:\Developpement_informatique\vsc\Portfolio\portfolio\Sidoine_Kolaole_Yebadokpo_CV.pdf" | |
| # Créer ou charger la base de données | |
| db_path = "cv_database" | |
| if not os.path.exists(db_path): | |
| print("Création de la base de données...") | |
| db = process_cv(cv_path) | |
| db.save_local(db_path) | |
| else: | |
| print("Chargement de la base de données existante...") | |
| db = FAISS.load_local(db_path, embeddings=HuggingFaceEmbeddings()) | |
| # Boucle pour poser des questions | |
| while True: | |
| question = input("\nPosez une question sur votre CV (ou tapez 'quit' pour quitter) : ") | |
| if question.lower() == 'quit': | |
| break | |
| result = query_cv(db, question) | |
| print("\nRéponse trouvée dans votre CV:") | |
| print(result) |