Structuration de texte LLM : la simplicité à portée de main
LangExtract : Structuration de texte facilitée par les LLM
LangExtract est une bibliothèque Python open-source de pointe qui permet aux utilisateurs d'extraire des informations structurées à partir de textes non structurés avec une précision et une facilité sans précédent. En exploitant la puissance des grands modèles linguistiques (LLM), cet outil est conçu pour traiter divers formats de texte, des notes cliniques et rapports aux œuvres littéraires, et organiser les détails clés dans un schéma cohérent et utilisable.
Pourquoi choisir LangExtract ?
LangExtract se distingue par son ensemble unique de fonctionnalités :
- Ancrage source précis : Chaque information extraite est méticuleusement mappée à son emplacement exact dans le texte original. Cela permet une vérification facile et une mise en évidence visuelle dans le document source, garantissant la traçabilité.
- Sorties structurées fiables : En utilisant des exemples "few-shot" et une génération contrôlée dans des modèles pris en charge comme Google Gemini, LangExtract impose un schéma de sortie cohérent, conduisant à des résultats structurés robustes et prévisibles.
- Optimisé pour les longs documents : La bibliothèque relève le défi de l'extraction d'informations à partir de textes volumineux grâce à une stratégie efficace impliquant le découpage du texte, le traitement parallèle et plusieurs passes d'extraction, améliorant ainsi significativement le rappel.
- Visualisation interactive : LangExtract génère des fichiers HTML autonomes et interactifs, facilitant la visualisation et la revue de milliers d'entités extraites dans leur contexte textuel d'origine.
- Support LLM flexible : Que vous préfériez les LLM basés sur le cloud comme Gemini ou les modèles open-source locaux via Ollama, LangExtract offre une large compatibilité et peut être étendu à d'autres API tierces.
- Adaptable à tout domaine : Définissez des tâches d'extraction pour n'importe quel domaine en utilisant seulement quelques exemples, éliminant ainsi le besoin de fine-tuning du modèle.
Premiers pas avec LangExtract
L'installation est simple via pip :
pip install langextract
Pour les modèles basés sur le cloud, la configuration de la clé API est généralement requise. LangExtract prend en charge la définition de la clé API via des variables d'environnement ou un fichier .env
pour une gestion sécurisée. Les options incluent les modèles Gemini via AI Studio ou Vertex AI, et les modèles OpenAI.
L'utilisation basique consiste à définir votre tâche d'extraction avec un prompt et à fournir des exemples :
import langextract as lx
import textwrap
# Définir la tâche d'extraction
prompt = textwrap.dedent("""
Extrais les personnages, les émotions et les relations dans l'ordre d'apparition.
Utilise le texte exact pour les extractions. Ne paraphrase pas et n'overlaps pas les entités.
Fournis des attributs significatifs pour chaque entité afin d'ajouter du contexte."""
)
# Fournir des exemples de guidage
examples = [
lx.data.ExampleData(
text="ROMEO. Mais doucement ! Quelle lumière brille à travers la fenêtre là-bas ? C'est l'est, et Juliette est le soleil.",
extractions=[
lx.data.Extraction(extraction_class="character", extraction_text="ROMEO", attributes={"emotional_state": "wonder"}),
lx.data.Extraction(extraction_class="emotion", extraction_text="Mais doucement !", attributes={"feeling": "gentle awe"}),
lx.data.Extraction(extraction_class="relationship", extraction_text="Juliette est le soleil", attributes={"type": "metaphor"})
]
)
]
# Texte d'entrée
input_text = "Lady Juliette contemplait les étoiles avec nostalgie, son cœur souffrant pour Roméo"
# Exécuter l'extraction
result = lx.extract(
text_or_documents=input_text,
prompt_description=prompt,
examples=examples,
model_id="gemini-2.5-flash",
)
# Sauvegarder les résultats et visualiser
lx.io.save_annotated_documents([result], output_name="extraction_results.jsonl")
html_content = lx.visualize("extraction_results.jsonl")
with open("visualization.html", "w") as f: f.write(html_content)
Ce processus génère un fichier HTML interactif, permettant une revue et une analyse faciles des entités extraites.
Capacités avancées
LangExtract excelle avec les documents longs, prenant en charge le traitement direct à partir d'URL (par exemple, Project Gutenberg) et offrant des paramètres tels que extraction_passes
et max_workers
pour optimiser les performances et le rappel. La bibliothèque présente également des applications spécialisées comme l'Extraction de médicaments et RadExtract, une démo pour structurer les rapports de radiologie disponible sur Hugging Face Spaces.
Contribuez au projet via son dépôt GitHub, et explorez les exemples détaillés pour une utilisation avancée et des aperçus de ses puissantes capacités pour le traitement du langage naturel et les tâches de structuration de données.