Question:
Extraire des jeux anonymisés d'un pgn
Purefan
2020-07-01 00:38:22 UTC
view on stackexchange narkive permalink

Je suis un grand fan d'extrait de pgn, mais je suis ouvert à d'autres outils compatibles avec Linux. J'ai un gros fichier pgn (plus de 5 millions de jeux) et un ensemble de codes ECO. Mon objectif est de récupérer tous les jeux correspondant à ces codes ECO, mais en supprimant ou en effaçant les noms et les notes des joueurs, l'année jouée et le résultat du jeu.

Je prévois alors d'ouvrir une partie aléatoire avec Scid et analysez-le, puisque supprimer les données des joueurs et le résultat du jeu m'aidera à éviter tout biais.

Jusqu'à présent, j'utilise pgn-extract comme ceci: pgn-extract -t filter_for_naked --noresults - -notags --nocomments --noduplicates -bl20 --output naked.pgn mon.pgn

Mais Scid a des problèmes pour ouvrir le fichier. Comme prévu, chaque jeu est juste l'ensemble des mouvements (pas d'en-tête du tout) et je soupçonne que Scid nécessite au moins quelques en-têtes.

Des conseils sur la façon d'utiliser pgn-extract ou Scid pour y parvenir?

Quatre réponses:
kentdjb
2020-07-01 11:45:00 UTC
view on stackexchange narkive permalink

Merci pour votre compliment sur pgn-extract (j'en suis l'auteur). Vous pourrez peut-être rendre la tâche un peu plus facile en ajoutant --linelength 1000 à la liste d'arguments afin d'obtenir chaque jeu sur une seule ligne, puis utilisez sed pour ajouter un résultat inconnu à la fin du jeu et retravaillez le jeu avec pgn-extract pour ajouter une liste vide de 7 balises. Enfin, utilisez à nouveau sed pour modifier les balises White et Black.

La commande résultante ressemblerait à ceci, bien que les experts sed puissent la nettoyer un peu:

  pgn-extract -t filtre_pour_naked --noresults --notags --nocomments --noduplicates -bl20 --linelength 1000 my.pgn | sed -e 's /..*/ & * /' | pgn-extrait -7 | sed -e 's / White "?" / White "AnonW" /; s / Black "?" / Black "AnonB" /' > naked.pgn  

Vous obtiendrez une erreur rapports pour les jeux qui se terminent par mate ayant des résultats incohérents mais vous pouvez les masquer dans un fichier journal.

Merci beaucoup David! tant pour pgn-extract que pour la commande de travail, cela m'a donné exactement ce que je cherchais. Une grande aide dans ma quête d'amélioration.
Je vous en prie!
Brian Towers
2020-07-01 01:11:20 UTC
view on stackexchange narkive permalink

Scid vs PC nécessite [Black "AN Other1"] [White "AN Other2"] [Result ""].
Comme il a été cloné à partir de SCID, je suis presque sûr que SCID sera le même. Je vous suggère d'écrire un programme simple pour ajouter ces 3 champs d'en-tête avec le champ [Result] correspondant au résultat à la fin du jeu.

Arne
2020-07-01 01:25:03 UTC
view on stackexchange narkive permalink

Vous pouvez utiliser sed '/ Result / c [Result ""]' my.pgn > no_results.pgn pour remplacer les lignes contenant la chaîne Result par ce que vous voulez la ligne à être. Vous pouvez l'adopter pour tout ce que vous souhaitez remplacer. Vous souhaitez conserver le c .

David Miedema
2020-07-01 01:07:04 UTC
view on stackexchange narkive permalink

Vous pouvez toujours copier manuellement le texte pur d'un PGN, mais cela ne fonctionne que pour un seul jeu.

Pour plus de jeux, je ne suis pas sûr, et malheureusement la plupart des logiciels d'échecs sont pour Windows.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 4.0 sous laquelle il est distribué.
Loading...