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.