Aller au contenu principal

Retour aux investigations

3 min · 600 mots · 200 mots/minute · mesuré le 2026-09-05

Deux textes de l'auteur sont introuvables par leur titre

La question

Un corpus de six décennies expose des titres, des mots-clefs et des descriptions. Suffisent-ils à retrouver ce qu'il contient ? La question décide de la valeur d'un index : si les métadonnées portent les objets, un moteur suffit ; sinon, il faut un appareil, et cet appareil coûte cher.

Le cas d'épreuve

Interrogé sur ses instruments, l'auteur nomme lui-même la métaphore dont il s'est servi pour raisonner sur le passage entre domaines : les voies métaboliques. Le cas est idéal pour éprouver l'index, parce que l'objet est nommé par l'auteur, précis, et lexicalement stable en anglais.

La mesure

L'objet dans le texte intégral :

grep -ci 'metabolic pathway' corpus/text/*.txt | grep -v ':0' | wc -l   # 9 fichiers
grep -ci 'metabolic pathway' corpus/text/*.txt | grep -v ':0' | awk -F: '{s+=$2} END{print s}'   # 18 blocs
grep -ohi 'metabolic pathway' corpus/text/*.txt | wc -l                 # 22 occurrences

Vingt-deux occurrences sur dix-huit blocs de neuf textes, de 1979 à 2024. Les deux premiers nombres diffèrent parce que grep -c compte des lignes — donc, dans ce dépôt, des blocs — et non des occurrences. C'est une erreur de comptage qui a été commise ici même, corrigée, et que ce recompte confirme.

Sept des vingt-deux ne sont pas des emplois conceptuels : cinq blocs documentaires, une légende de figure ([LIP-2020-aimeet]§199), et la plus ancienne, [LIP-1979-terrmap]§242, qui est une entrée de bibliographie. Restent douze blocs de prose.

Le même objet dans les métadonnées de l'index :

.venv/bin/python -c "
import json
L = [json.loads(l) for l in open('corpus/index/corpus.jsonl')]
def h(champ, s):
    n = 0
    for d in L:
        v = d.get(champ)
        if v is None: continue
        if isinstance(v, list): v = ' '.join(map(str, v))
        if s in str(v).lower(): n += 1
    return n
print(len(L), h('titre','metabolic pathway'), h('keywords','metabolic pathway'),
      h('description','metabolic pathway'))"

Sortie : 3586 0 0 0.

Sur les 3 586 unités indexées : zéro titre, zéro mot-clef, zéro description. Et pourtant les textes existent — ils portent leur objet en titre de section, à une ancre h3 :

.venv/bin/python -c "
import json
for d in map(json.loads, open('corpus/index/corpus.jsonl')):
    if 'metabolic' in json.dumps(d.get('anchors') or [], ensure_ascii=False).lower():
        print(d['id'], d.get('annee'), '|', (d.get('titre') or '')[:70])"

Cinq unités remontent, dont les deux développements attendus, en 2024 et 2025.

Ce que ça change

Le sous-titre est plus informatif que le titre, et c'est mesuré. L'hypothèse figurait dans une proposition d'accès au corpus ; elle se vérifie sans une requête réseau, sur l'index déjà versionné.

Un moteur de recherche sur les titres est structurellement aveugle ici. Ce n'est pas une faiblesse de tel moteur : les métadonnées ne portent pas les objets. Tout accès sérieux au corpus doit descendre au niveau des ancres de section, sinon il ne rend pas trouvable ce que le corpus contient.

Le coût de l'appareil est justifié par la mesure, pas par le principe. L'indexation bloc par bloc de ce dépôt n'a pas été choisie par goût de la rigueur : ici, elle est la seule chose qui trouve les deux textes.

Ce que ça n'établit pas

Que tout le corpus soit également opaque. Un seul objet a été éprouvé. Le résultat est net sur cet objet ; il suggère une propriété générale des métadonnées, il ne la démontre pas.

Que les deux textes soient importants. Ils ne sont pas parmi les quatre-vingt-quinze textes de preuve, donc ils n'ont pas été lus dans le régime d'évaluation de ce dépôt. Ce qui est établi est leur invisibilité par titre, pas leur valeur.

Renvois

Rejouer la mesure

Les commandes ci-dessus sont dans le texte, pas ici.

Elles se lancent depuis un clone du dépôt.

Aucune ne fait de requête réseau.

La source de cette page, dans le dépôt :

deliverables/investigations/06-deux-textes-introuvables-par-titre.md