

# Comment mesurer la cooccurrence de mots-clés dans un échantillon fourni de publications X

Comptez un mot cible et un mot associé une seule fois dans chaque publication complète de l’échantillon fourni. Comparez ensuite la fréquence du mot associé dans les publications contenant le mot cible à sa fréquence dans celles qui ne le contiennent pas.

Un terme est un mot que vous avez choisi avant le comptage. Le terme cible est le mot que vous suivez. Un terme associé est un second mot dont vous examinez la présence avec le terme cible. Une paire de termes réunit ces 2 termes. La cooccurrence signifie que les 2 termes figurent dans la même publication. Une publication admissible est une publication distincte dont le texte est complet et qui appartient à votre périmètre. Le périmètre comprend la période retenue et votre liste exacte d’URL.

Le nombre de présences conjointes est le nombre de publications admissibles qui contiennent les 2 termes. La proportion conditionnelle est égale au nombre de présences conjointes divisé par le nombre de publications contenant le terme cible. La proportion de référence est égale au nombre de publications contenant le terme associé parmi les autres publications, divisé par le nombre de ces autres publications. Le dénominateur est le nombre par lequel vous divisez. Une proportion sans dénominateur est indéfinie.

Le résultat comprend un ensemble d’indicateurs de présence des termes, un tableau des paires, les 2 proportions et un registre des textes manquants. Ce registre est la liste enregistrée des tentatives qui restent exclues du comptage. Décrivez uniquement l’échantillon fourni.

## 1. Définissez le périmètre

Notez le terme cible et chaque terme associé avant de collecter les publications. Notez les dates de publication que vous souhaitez inclure. Notez les URL connues exactes qui constituent le périmètre.

Ce comptage indique quels termes associés figurent avec le terme cible dans l’échantillon fourni. Il ne constitue pas un historique de leur utilisation au fil du temps. Il ne s’agit pas d’un service de recherche couvrant toutes les publications sur X.

Consignez d’abord ces choix. Si vous choisissez les termes associés après avoir vu les mots, vous risquez de favoriser une régularité que vous avez déjà remarquée.

## 2. Collectez des publications publiques connues

Un Actor est un programme hébergé qui collecte des lignes de données sources. Une Task est une configuration d’entrée enregistrée pour un Actor. Une exécution correspond à un lancement de l’Actor.

Utilisez l’Actor [X Post Metrics](https://apify.com/chronometrica/x-post-metrics), version publique 1.0.4. La Task actuelle est [X Post Analytics Snapshot](https://apify.com/chronometrica/x-post-metrics/examples/x-post-analytics-snapshot). La Task conserve une configuration d’entrée de départ. Elle ne compte pas les termes à votre place. Une Task enregistrée ne prouve pas que le comptage est automatique.

Cette version lit `startUrls`. Chaque valeur doit être l’URL d’une publication publique connue et contenir `/status/`. La liste enregistrée contient 3 exemples d’URL :

- https://x.com/OpenAI/status/2074907025537224840
- https://x.com/OpenAI/status/2074907027378511884
- https://x.com/OpenAI/status/2074907031862190406

Remplacez toute la liste par une seule URL publique contenant `/status/` que vous connaissez déjà. Utilisez cette seule URL pour la première exécution. N’ajoutez pas de recherche. Ne demandez pas l’historique des publications. Ne définissez pas `maxItems`. Cet Actor ne renvoie pas d’archives complètes. Ajoutez d’autres URL connues uniquement après avoir examiné la première ligne.

Chaque ligne enregistrée peut contenir ces champs :

| Champ | Contenu |
| --- | --- |
| `inputUrl` | L’URL que vous avez envoyée |
| `postUrl` | L’URL de la publication figurant sur la ligne |
| `postId` | L’identifiant de la publication |
| `postType` | Le type de publication |
| `publishedAt` | La date et l’heure de publication |
| `text` | Le texte actuel de la publication |
| `profileUrl` | L’URL du profil |
| `profileId` | L’identifiant du profil |
| `profileUsername` | Le nom d’utilisateur du profil |
| `profileName` | Le nom affiché du profil |
| `status` | L’état de la ligne |
| `statusReason` | La raison de cet état |
| `observedAt` | La date et l’heure d’observation de cette ligne |

`text` peut avoir la valeur null. D’autres données de la ligne peuvent aussi avoir la valeur null. Null signifie que la valeur est manquante. Cela ne signifie pas que le nombre est égal à 0.

`postMetricStatus` est distinct de `text`. Il contient une entrée pour chacun des 6 indicateurs. Ces indicateurs sont les vues, les mentions J’aime, les réponses, les republications, les citations et les signets. Chaque entrée possède son propre état et sa propre précision. La précision indique le degré d’exactitude de la valeur de cet indicateur. Ne lisez pas les 6 entrées comme les 6 niveaux d’une même échelle. Elles ne prouvent pas que le texte est complet.

OUTPUT fournit des éléments sur l’exécution. Ce n’est pas le tableau des termes. Il contient `inputCount`, `datasetRows`, `usefulRows`, `billableRows`, `failedRows`, `statusCounts` et `stopReason`. `inputCount` indique le nombre d’URL reçues par l’exécution. `datasetRows` indique le nombre de lignes enregistrées. `usefulRows` est le nombre total de lignes utiles de l’exécution. `billableRows` est le nombre total de lignes facturables de l’exécution. `failedRows` est le nombre total de lignes en échec de l’exécution. `statusCounts` regroupe les lignes par état. `stopReason` indique pourquoi l’exécution s’est arrêtée. Ces totaux ne sont pas les champs présents sur chaque ligne.

Une lecture vérifiée d’une publication publique connue d’OpenAI a renvoyé les bons identifiants de publication et de profil. Elle a renvoyé la date et l’heure de publication ainsi que les compteurs actuels. Le texte était présent et non vide. Il comptait 200 caractères. Cet article ne reproduit pas ce texte. Pour cette vérification, OUTPUT indiquait `inputCount` 1, `datasetRows` 1, `usefulRows` 1, `billableRows` 1 et `failedRows` 0. `statusCounts` indiquait ok 1. `stopReason` avait la valeur `inputs_exhausted`.

Ce résultat montre que le texte a pu être obtenu pour 1 publication publique connue. Il ne prouve pas que le résultat sera identique pour chaque URL. Il ne prouve pas que le texte d’une image a été lu. Il ne prouve pas que le corps d’une publication citée, une page liée ou les paroles d’une vidéo ont été lus. Les parties masquées ou à accès restreint nécessitent une vérification distincte. Un état ok ne prouve pas que le texte suffit pour votre comptage. Un texte de 200 caractères ne prouve pas que la ligne contient toute la publication.

Rapprochez les lignes à l’aide de `postId` pour qu’une publication corresponde à une seule unité. Conservez `publishedAt` et `observedAt`. Si l’identifiant de la publication manque, attribuez un état distinct à cette tentative. Si la source échoue, attribuez un état distinct à cette tentative. Si votre périmètre repose sur des dates, une valeur `publishedAt` inconnue ne constitue pas une date connue comprise dans la période. Excluez cette tentative du comptage limité par les dates jusqu’à ce que la date soit connue. Ne transformez pas une donnée manquante en un nombre de mots égal à 0.

## 3. Déterminez si le texte est complet

Cette analyse utilise uniquement le texte des publications. Pour chaque ligne, indiquez si le texte est assez complet pour être compté. Enregistrez cette note.

Ne considérez pas un état ok comme une preuve que le texte est complet. Ne considérez pas `postMetricStatus` comme une telle preuve. Si `text` est manquant ou partiel, excluez la publication du dénominateur des textes complets. N’ajoutez une copie distincte qu’après l’avoir vérifiée vous-même.

Ne prenez pas de mots dans une image. Ne prenez pas de mots dans une page liée. Ne prenez pas de mots dans une vidéo. Même si l’état de la ligne indique une réussite, la question du texte peut rester sans réponse.

Le champ `text` contient le texte observé à `observedAt`. Ce texte peut différer d’une version antérieure si la publication a été modifiée. Il peut aussi en omettre une partie. Si cette différence risque de modifier votre comptage, conservez le texte actuel séparément de toute copie antérieure. Ne les fusionnez pas sans consigner votre choix par écrit.

## 4. Consignez la règle de correspondance des termes avant de compter

Utilisez une seule règle de correspondance littérale et consignez-la avant d’attribuer le premier indicateur. Pour l’exemple en anglais de cet article, la règle est fixe.

Ne distinguez pas les majuscules des minuscules. Ne retenez que les mots entiers. Un mot entier possède une limite de chaque côté, ou se trouve au début ou à la fin du texte. Une limite marque le bord d’un mot. Les espaces constituent des limites. Un point, une virgule ou un guillemet constitue aussi une limite. Ce signe ne fait pas partie du mot. Selon cette règle, les caractères timer. correspondent au terme timer.

Ne réduisez pas les mots à leur radical. Un radical est une racine raccourcie. Ne comptez pas un synonyme comme le même terme. Conservez le texte brut sans le modifier. Une expression de 2 mots ou plus nécessite sa propre règle écrite. Un autre système d’écriture nécessite sa propre règle. Un lien ou un alias nécessite sa propre règle. Testez cette règle sur le texte brut avant de l’utiliser.

La présence d’un mot entier ne signifie pas que l’auteur approuve le terme. Elle ne prouve pas [quelle réalité le mot désigne](/fr/articles/verifier-les-mentions-de-votre-produit-sur-x/).

## 5. Attribuez un indicateur à chaque publication admissible

Un indicateur binaire vaut 1 ou 0. Utilisez 1 lorsque le texte admissible contient le terme selon votre règle. Utilisez 0 lorsque ce texte complet ne le contient pas. Créez un indicateur par terme et par publication admissible distincte.

La publication est l’unité. Si le terme apparaît 5 fois dans une publication, l’indicateur reste égal à 1. Ces répétitions décrivent le texte de la publication. Elles n’ajoutent pas de publications. Une copie exacte du même export n’ajoute pas non plus de publication.

Si 2 versions d’une même publication diffèrent, choisissez la source avant de compter. Consignez ce choix. Consignez tout dénominateur qui change. Ne conservez pas les 2 versions comme s’il s’agissait de 2 publications.

## 6. Construisez le tableau à 2 lignes et 2 colonnes

Choisissez un terme associé et répartissez chaque publication admissible dans l’une des 4 cases. Une case contient l’un des 4 effectifs. Les cases correspondent à la présence des 2 termes, du terme cible seul, du terme associé seul ou d’aucun des 2 termes.

Indiquez n, le nombre de publications contenant le terme cible, le nombre de publications contenant le terme associé et le nombre de présences conjointes. n est le nombre de publications admissibles.

Utilisez ces formules simples :

proportion conditionnelle = nombre de présences conjointes / nombre de publications contenant le terme cible

proportion de référence = publications contenant le terme associé sans le terme cible / publications sans le terme cible

La proportion conditionnelle est la proportion de publications contenant le terme associé parmi celles qui contiennent le terme cible. La proportion de référence est la proportion de publications contenant le terme associé parmi celles qui ne contiennent pas le terme cible.

Si le nombre de publications contenant le terme cible est égal à 0, la proportion conditionnelle est indéfinie. Si le nombre de publications sans le terme cible est égal à 0, la proportion de référence est indéfinie. Laissez la proportion vide. N’inscrivez pas 0 pour remplir la case. Inscrire 0 reviendrait à prétendre avoir mesuré un groupe vide.

## 7. Comparez les proportions en tenant compte des dénominateurs

Présentez les 2 fractions. Une proportion conditionnelle élevée peut concerner un mot courant. La proportion de référence permet de voir cette possibilité. De nombreuses présences conjointes ne prouvent pas l’existence d’un lien spécifique.

Cet échantillon est petit et vous avez choisi les URL. Il ne peut pas représenter l’ensemble de X. Il ne peut pas établir de cause. Il ne peut pas indiquer combien de publications utilisent le terme sur X. Il ne peut pas montrer à quelle vitesse une régularité évolue. Il ne peut pas établir de significativité statistique. Ce terme désigne un test formel visant à évaluer le rôle du hasard. Ce tableau ne constitue pas un tel test.

L’auteur peut citer un terme sans l’approuver. L’examen du sens est une tâche distincte. Utilisez les proportions pour décrire ces publications admissibles.

## 8. Enregistrez le comptage et précisez sa limite

Enregistrez les indicateurs de présence des termes, le tableau des paires, la règle écrite et le registre des exclusions. Un lecteur ne peut reconstituer chaque dénominateur que si ces éléments sont conservés.

Si vous avez besoin de toutes les publications correspondantes au fil du temps, précisez ce que cet échantillon ne permet pas de faire. Une liste d’URL connues ne constitue pas cet ensemble complet. Utilisez l’échantillon pour examiner une idée formulée. Améliorez ensuite la définition écrite du périmètre. Ne présentez pas le tableau comme une tendance valable pour l’ensemble de X.

## Appliquez les mêmes règles à un exemple fictif original

L’exemple fictif original commence ici. Les publications, les identifiants et les nombres ci-dessous constituent un exemple pédagogique. Ils ne sont pas un résultat d’Actor. Ils ne sont pas OUTPUT. Ils ne permettent pas d’estimer l’usage des mots sur X. Ils n’établissent pas de cause.

Chaque publication possède un identifiant fictif distinct et un texte complet selon la règle ci-dessus. Ces identifiants ne sont pas de véritables identifiants de publications X. La casse ne compte pas : Job correspond donc à job. Un point de fin de phrase constitue une limite. Job se trouve au début du texte : le début du texte constitue donc une limite. Aucun mot ne contient simplement retry, timer ou job à l’intérieur d’un mot plus long.

| Identifiant | Texte fictif actuel | retry | timer | job |
| --- | --- | --- | --- | --- |
| F1 | Job retry uses a timer. | 1 | 1 | 1 |
| F2 | Job retry checks the timer. | 1 | 1 | 1 |
| F3 | Job retry waits for a timer. | 1 | 1 | 1 |
| F4 | Job retry cancels the timer. | 1 | 1 | 1 |
| F5 | Job retry adds a log. | 1 | 0 | 1 |
| F6 | Job retry follows the rule. | 1 | 0 | 1 |
| F7 | Job timer logs a message. | 0 | 1 | 1 |
| F8 | Job log records a message. | 0 | 0 | 1 |
| F9 | Job rule records a message. | 0 | 0 | 1 |
| F10 | Job workers send a message. | 0 | 0 | 1 |

Les quatre premières publications contiennent retry, timer et job. Les deux suivantes contiennent retry et job, mais pas timer. La septième contient timer et job, mais pas retry. Les trois dernières contiennent uniquement job.

Additionnez les indicateurs. Le total pour retry est de 6. Le total pour timer est de 5. Le total pour job est de 10. Les indicateurs de retry et de timer valent tous les 2 1 pour F1, F2, F3 et F4. Le nombre de présences conjointes est de 4.

Voici le tableau pour retry et timer :

| terme cible | timer 1 | timer 0 | Total de la ligne |
| --- | --- | --- | --- |
| retry 1 | 4 | 2 | 6 |
| retry 0 | 1 | 3 | 4 |
| Total de la colonne | 5 | 5 | 10 |

n vaut 10. Le nombre de publications contenant le terme cible est de 6. Le nombre de publications contenant le terme associé est de 5. Le nombre de présences conjointes est de 4. Les 4 cases contiennent 4, 2, 1 et 3.

La proportion conditionnelle est de 4/6. Cette fraction s’arrondit à 66,7 %. Le dénominateur correspond aux 6 publications de la ligne retry 1. Ne divisez pas 4 par l’ensemble des 10 publications.

La proportion de référence est de 1/4, soit 25 %. Le dénominateur correspond aux 4 publications de la ligne retry 0. Dans cette ligne, seule F7 contient timer. Le total de la colonne timer 0 est de 5. Il s’agit d’un autre total. N’utilisez pas 5 comme dénominateur ici.

Le tableau pour retry et job utilise les mêmes 10 publications :

| terme cible | job 1 | job 0 | Total de la ligne |
| --- | --- | --- | --- |
| retry 1 | 6 | 0 | 6 |
| retry 0 | 4 | 0 | 4 |
| Total de la colonne | 10 | 0 | 10 |

Le nombre de présences conjointes de retry et de job est de 6. La proportion conditionnelle est de 6/6, soit 100 %. La proportion de référence est de 4/4, soit 100 %. Job compte plus de présences conjointes que timer. Timer en compte 4. Job en compte 6. Les 2 proportions de job sont égales : job ne présente donc aucun contraste dans cet exemple. Les cases contenant 0 correspondent à de véritables absences dans des textes complets. Elles ne correspondent pas à des textes manquants.

Deux autres tentatives de collecte auprès des sources ne fournissent aucun texte. Conservez-les dans un registre destiné au lecteur. Ne les appelez pas F11 et F12. Ne les placez pas dans la case correspondant à l’absence des deux termes. Ne copiez pas ce registre dans OUTPUT. Ne l’assimilez pas à `failedRows`. Lorsque le texte manque, la présence des termes est inconnue. Elle ne correspond pas à un indicateur égal à zéro. L’absence d’un mot ne permet pas non plus de déduire un échec signalé par la source.

| Tentative | Texte | retry | timer | job | Admissible | Raison |
| --- | --- | --- | --- | --- | --- | --- |
| S1 | indisponible | inconnu | inconnu | inconnu | non | Le texte est manquant, donc chaque indicateur est inconnu. Cette tentative ne constitue pas une publication où l’absence des termes a été constatée. |
| S2 | indisponible | inconnu | inconnu | inconnu | non | Le texte est manquant, donc chaque indicateur est inconnu. Cette tentative ne constitue pas une publication où l’absence des termes a été constatée. |

La collecte compte 12 tentatives auprès des sources. 10 correspondent à des publications admissibles distinctes dont le texte est complet. Pour 2 tentatives, le texte est indisponible. Le dénominateur des textes complets reste égal à 10.

Si un groupe contenant le terme cible comptait 0 publication admissible, sa proportion conditionnelle serait indéfinie. Si le groupe de référence comptait 0 publication, sa proportion serait aussi indéfinie. Écrivez « indéfinie ». N’inventez pas une valeur de 0 %.

Comparez 4/6 à 1/4 pour cet exemple uniquement. L’écart décrit ces 10 phrases. Il ne décrit pas l’ensemble de X. Il n’établit ni cause, ni significativité statistique, ni tendance. Job montre pourquoi la seconde proportion compte. Son nombre de présences conjointes est plus élevé, mais ses 2 proportions sont de 100 %.

## Prochaine action

Appliquez votre règle déclarée de correspondance des termes à un texte vérifié. Enregistrez les indicateurs binaires, le tableau des paires et le registre des exclusions. Comparez la proportion conditionnelle à la proportion de référence. Présentez les 2 dénominateurs. Utilisez l’Actor [X Post Metrics](https://apify.com/chronometrica/x-post-metrics) et la Task [X Post Analytics Snapshot](https://apify.com/chronometrica/x-post-metrics/examples/x-post-analytics-snapshot). Remplacez la liste `startUrls` enregistrée par une seule URL publique connue contenant `/status/` avant de compter.

## Sources et lectures complémentaires

- [Actor X Post Metrics](https://apify.com/chronometrica/x-post-metrics)
- [Task X Post Analytics Snapshot](https://apify.com/chronometrica/x-post-metrics/examples/x-post-analytics-snapshot)