Projet:Restauration lien rouge/Script

Un article de Wikipédia, l'encyclopédie libre.


Ce projet est grandement inspirer du travail fait sur en: En cas de problème, SVP vous referez a celui-ci --DiamondDave 29 jun 2005 à 03:24 (CEST)


Les instructions ci-dessous décrivent comment les listes de suggestions ont été créées.

  1. Installez-vous une version assez récente de Mysql. C'est une SGBD gratuite et assez facile a installer, la plupart des OS et des architecture de PC sont supporter. Le procéder devrait fonctionner sur n'importe quelle version assez récente de mysql.
  2. Télécharger la dernière version des tables cur et de brokenlinks ici. Elles sont normalement labelliser cur_table.sql.gz et fr_brokenlinks_table.sql.gz respectivement.
  3. Dézipper ces fichier. La plupart des utilitaires de décompression permette de faire ceci, par exemple winzip ou l'utilitaire gratuit gzip.
  4. Importer les tables dezipper dans mysql. Pour ce faire, commencer une nouvelle session de mysql et créer une nouvelle BD (CREATE DATABASE redlinks;) et assurez-vous que c'est votre BD courante (USE redlinks;). Maintenant utilisez source <filename> pour importer chacun des deux fichiers. Ceci devrait prendre quelque temps, la base de données wikipedia contient beaucoup de donnée.

Maintenant vous avez toutes les données voulus pour commencer la création des listes. Pour plus d'information sur l'étape courante, SVP vous referez a en:Wikipedia:Database download.

[modifier] Création des table de travail

Maintenant roulez ce script:


Pour facilite la portabilité des développements présent et future fait sur en:, la nomenclature restera anglaise et ne sera pas traduite.

ALTER TABLE cur ADD INDEX ( cur_namespace, cur_id );

DROP TABLE IF EXISTS crushed_art;
DROP TABLE IF EXISTS crushed_links;

CREATE TABLE crushed_art (
  id mediumint(7) unsigned NOT NULL,
  title varchar(255) BINARY NOT NULL
) ENGINE = INNODB;

CREATE TABLE crushed_links (
  id mediumint(7) unsigned NOT NULL,
  orig varchar(255) BINARY NOT NULL,
  link varchar(255) BINARY NOT NULL
) ENGINE = INNODB;

INSERT INTO crushed_art
SELECT cur_id, cur_title
FROM cur
WHERE cur_namespace = 0
AND Length( cur_title ) > 4
AND cur_is_redirect = 0;

INSERT INTO crushed_links SELECT bl_from, bl_to, bl_to 
FROM brokenlinks, cur
WHERE bl_from = cur_id AND cur_namespace = 0 AND Length( bl_to ) > 4;

Ceci crée deux nouvelles tables (crushed_links and crushed_art) et copie toutes les données relier au article du namespace - namespace 0.

La raison pour faire une copie des données est que nous sommes sur le point de les transformer - ou crushing. Le but de cette étape est de transformer tout les liens rouges et tous les titres d'article en forme plus simple, et puis regarder si les formes simplifiées des articles et des liens n'ont pas exposer un nouveau match. Par exemple si nous considérons la répétition de la lettre 's', nous pourrions transformer le titre de l'article Mississippi en Misisippi et faire de même pour un lien rouge vers Mississippi en Misisippi. Maintenant que le titre de l'article correspond au titre du lien rouge nous avons un nouveau candidat a proposer dans les liste!

Voici les scripts pour faire les transformations pour différente liste de suggestion:

Maintenant que nous avons fait quelques transformations qui vont nous permettre d'avoir quelques suggestions, nous pouvons construire notre table de suggestion:


DROP TABLE IF EXISTS suggestions;

CREATE TABLE suggestions (
    title varchar(255) binary NOT NULL,
    link varchar(255) binary NOT NULL,
    suggestion varchar(255) binary NOT NULL,
    PRIMARY KEY ( title, link, suggestion )
);

ALTER TABLE crushed_links ADD INDEX( link );

REPLACE INTO suggestions
SELECT f.cur_title, orig, t.cur_title
FROM   cur f, crushed_links, crushed_art, cur t
WHERE  f.cur_id = crushed_links.id
AND    f.cur_namespace = 0
AND    t.cur_id = crushed_art.id
AND    t.cur_namespace = 0
AND    link = title;

Next it's often useful to carry out a bit of automated weeding out of suggestions we expect to be quite poor. These might include:

  • Suggestions to transform red links into the name of the article that contains them.
  • Red links that are very short after crushing. Short links are likely to match many spurious article titles.
  • Links that have already been suggested and marked as incorrect by project members - see the exception list

As a rule of thumb, I try to ensure that over 75% of all entries on a list of suggestions are valid, even if this means discaring a large number of entries that have a lesser but still significant chance of being correct. There are over 2 million red links out there - it's not worth trying to develop complex techniques when sheer numbers ensure that simple ones produce amply long lists.

To export your cleaned-up list of suggestions, the simplest thing to do is use mysql's tee command. This copies the output of your mysql session into a file. This file can then be opened in a text-editor (I like textpad) and prepared for cautting and pasting into wikipedia. Do be cautious of trying to cut and pase results from a command window under Microsoft Windows, this can lead to uncommon characters being lost.

A simple export of your suggestions table to a text file could be done by:


tee c:\suggestions.txt;

SELECT concat( '*[[', title, ']] links to  [[', link, ']], try [[', suggestion, ']]' )
FROM suggestions;

notee;

Autres langues