Pour optimiser la lecture et la synthèse d'articles de recherche, il est possible d'utiliser des modèles de langage de grande taille (LLM) afin de traduire automatiquement les résumés d'une collection d'articles. Cette approche permet d'exporter les résumés traduits dans un format structuré, tel que Markdown, pour une intégration facile dans des logiciels de prise de notes.
Un exemple typique de source de données provient de sites comme ACL Anthology, où les articles sont listés avec un format standardisé. Le contenu brut extrait se présente ainsi, avec un délimiteur spécifique séparant chaque article :
---DÉLIMITEUR---
Titre de l'article 1
Auteur1 | Auteur2 | Auteur3
Résumé complet de l'article 1...
---DÉLIMITEUR---
Titre de l'article 2
Auteur4
Résumé complet de l'article 2...
La première étape consiste à prétraiter ces données brutes pour les convertir en un format JSON exploitable. Voici un script Python qui analyse le contenu, extrait les titres, auteurs et résumés, puis les sauvegarde dans un fichier JSON :
import json
chemin_fichier = 'bruts/articles_origine.txt'
with open(chemin_fichier, 'r', encoding='utf-8') as fichier:
texte_brut = fichier.read()
delimiteur = '---DÉLIMITEUR---'
blocs_articles = [bloc.strip() for bloc in texte_brut.split(delimiteur) if bloc.strip()]
donnees_articles = []
for bloc in blocs_articles:
lignes = bloc.split('\n')
titre = lignes[0].strip()
liste_auteurs = [auteur.strip() for auteur in lignes[1].split('|')]
resume_texte = '\n'.join(ligne.strip() for ligne in lignes[2:]).strip()
donnees_articles.append({
'titre': titre,
'auteurs': liste_auteurs,
'resume': resume_texte
})
chemin_json = 'traitees/articles.json'
with open(chemin_json, 'w', encoding='utf-8') as sortie:
json.dump(donnees_articles, sortie, ensure_ascii=False, indent=4)
Ensuite, on utilise une API compatible avec OpenAI pour traduire les résumés. Le code suivant montre comment intégrer un client API pour appeler un modèle de traduction, avec des noms de variables et une structure modifiés pour plus de clarté :
import json
from openai import Client
client_api = Client(
base_url="https://votre-service-api.com",
cle_api="votre-clé-ici"
)
def traduire_texte(systeme, utilisateur):
reponse = client_api.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": systeme},
{"role": "user", "content": utilisateur}
]
)
return reponse.choices[0].message.content
consigne_systeme = "Vous êtes un traducteur expert pour des articles académiques. Traduisez le texte en français."
modele_invitation = "Veuillez traduire ce résumé de recherche en français :\n{contenu_resume}"
chemin_entree = 'traitees/articles.json'
with open(chemin_entree, 'r', encoding='utf-8') as entree:
articles = json.load(entree)
for index, article in enumerate(articles):
print(f"Progression : {index+1}/{len(articles)}")
resume_original = article['resume']
invitation = modele_invitation.format(contenu_resume=resume_original)
traduction = traduire_texte(consigne_systeme, invitation)
article['resume_traduit'] = traduction
chemin_sortie = 'traitees/articles_avec_traduction.json'
with open(chemin_sortie, 'w', encoding='utf-8') as sortie_finale:
json.dump(articles, sortie_finale, ensure_ascii=False, indent=4)
Enfin, pour faciliter l'importation dans des outils de documentation, on convertit les données JSON en format Mardkown. Le script ci-dessous génère un fichier Markodwn structuré avec les titres, auteurs et résumés tradutis :
import json
modeles_md = "- **Titre** : {titre}\n- **Auteurs** : {auteurs}\n> {resume_traduit}\n"
chemin_json = 'traitees/articles_avec_traduction.json'
with open(chemin_json, 'r', encoding='utf-8') as source:
articles_traduits = json.load(source)
contenu_markdown = []
for article in articles_traduits:
titre = article['titre']
auteurs = ' | '.join(article['auteurs'])
resume = article['resume_traduit']
bloc_md = modeles_md.format(titre=titre, auteurs=auteurs, resume_traduit=resume)
contenu_markdown.append(bloc_md)
separateur = '\n---\n'
sortie_md = separateur.join(contenu_markdown)
chemin_markdown = 'sorties/resumes_traduits.md'
with open(chemin_markdown, 'w', encoding='utf-8') as fichier_md:
fichier_md.write(sortie_md)
Le résultat final se présente sous forme de liste Markdown, avec chaque article clairement délimité :
- **Titre** : AmbiFC: Fact-Checking Ambiguous Claims with Evidence
- **Auteurs** : Max Glockner | Ieva Staliūnaitė | James Thorne | Gisela Vallejo | Andreas Vlachos | Iryna Gurevych
> Les systèmes automatisés de vérification des faits comparent les déclarations aux preuves pour prédire leur véracité. Dans les scénarios réels, les preuves récupérées peuvent ne pas soutenir ou réfuter sans ambiguïté la déclaration, entraînant des interprétations conflictuelles mais valides. Les ensembles de données existants supposent que les modèles développés avec eux prédisent une seule étiquette de véracité pour chaque déclaration, décourageant ainsi la gestion de cette ambiguïté. Pour résoudre ce problème, nous présentons AmbiFC, un ensemble de données de vérification des faits avec 10k déclarations dérivées de besoins d'information réels. Il contient des annotations de preuves fines de 50k passages de 5k pages Wikipédia. Nous analysons les désaccords découlant de l'ambiguïté lors de la comparaison des déclarations avec les preuves dans AmbiFC, observant une forte corrélation entre les désaccords des annotateurs et des phénomènes linguistiques tels que la sous-spécification et le raisonnement probabiliste. Nous développons des modèles pour prédire la véracité en gérant cette ambiguïté via des étiquettes souples, et découvrons qu'un pipeline qui apprend la distribution des étiquettes pour la sélection de preuves au niveau des phrases et la prédiction de la véracité donne les meilleures performances. Nous comparons les modèles entraînés sur différents sous-ensembles d'AmbiFC et montrons que les modèles entraînés sur les instances ambiguës performent mieux face aux phénomènes linguistiques identifiés.
---
- **Titre** : Language Varieties of Italy: Technology Challenges and Opportunities
- **Auteurs** : Alan Ramponi
> L'Italie se caractérise par un paysage de diversité linguistique unique en Europe, qui encode implicitement les connaissances locales, les traditions culturelles, les expressions artistiques et l'histoire de ses locuteurs. Cependant, la plupart des langues et dialectes locaux en Italie risquent de disparaître dans les générations à venir. La communauté du TAL a récemment commencé à s'engager avec les langues en danger, y compris celles d'Italie. Pourtant, la plupart des efforts supposent que ces variétés sont des monolithes de langues sous-dotées avec une forme écrite établie et des fonctions et besoins homogènes, et donc hautement interchangeables entre elles et avec des langues standardisées à haute ressource. Dans cet article, nous introduisons le contexte linguistique de l'Italie et remettons en question les hypothèses par défaut centrées sur la machine du TAL pour les variétés linguistiques italiennes. Nous plaidons pour un changement de paradigme d'un TAL centré sur la machine à un TAL centré sur le locuteur, et fournissons des recommandations et des opportunités pour un travail qui priorise les langues et leurs locuteurs par rapport aux avancées technologiques. Pour faciliter le processus, nous proposons finalement de construire une communauté locale vers des efforts participatifs responsables visant à soutenir la vitalité des langues et dialectes d'Italie.