Était tellement ici le défi. Pour mon site Web de voyage j'ai voulu avoir un manuscrit qui recherche automatiquement des extraits d'informations sur des destinations, de sorte qu'ils puissent être montrés comme peu d'information additionnelle aux pages appropriées. La source d'information est évidente : Wikipedia. Bien que Wikitravel puisse sembler un meilleur choix à la première vue pour ce projet, le but de Wikitravel est la plupart du temps de fournir des bouts de voyage et de même ; pour des informations générales, Wikipedia est certainement le meilleur choix.
Le texte de Wikipedia peut être employé librement - sous le permis de GFDL - et fournit également plusieurs méthodes pour l'usage de leur information. Pour des utilisateurs de puissance, il y a les décharges complètes de base de données disponibles. Néanmoins, pour ce petit projet qui serait surpuissance totale. Je n'ai pas l'espace, ni fais je sens la nécessité de télécharger et courir des manuscrits sur plusieurs gigaoctets de données pour simplement des extraits d'article d'environ cent destinations.
Une approche plus visée est donc recommandable dans ce cas particulier. Heureusement, un outil pour une approche page-visée à chercher est disponible aussi bien, à savoir le Special : Fonction d'exportation. Cette méthode est toujours préférée au-dessus de chercher les pages réelles de HTML, dues à la contrainte causée sur les serveurs de Wikipedia en analysant le wikicode et en le convertissant en HTML.
Pour mon projet, le Special : La fonction d'exportation ferait bien. Ceci renvoie un document de XML qui contient le texte d'article dans le wikicode entre les éléments de <text></text>. Automatiquement l'identification de l'extrait de l'information (paragraphe d'i.e.the premier) est une tâche intéressante, car les articles de Wikipedia dans le wikicode peuvent contenir beaucoup de beaucoup d'éléments avant de commencer même par le texte réel. Certaines de ces derniers incluent des étiquettes de calibre, des tables de l'information, des images et des définitions. Tellement premièrement, tous ces éléments devraient être enlevés, ce qui exigent l'écriture de au-dessus d'une douzaine - et parfois tout à fait raffiné - des expressions régulières. Après cela, nous aurons le premier paragraphe d'information même au début du texte en résultant.
Le manuscrit trouve alors le premier paragraphe en localisant un texte de d'une façon minimum 200 caractères qui est suivi de deux linebreaks. Ainsi, là nous allons : l'extrait long-sought de l'information a été identifié. Cependant, l'histoire ne finit pas ici. Le texte de l'article de Wikipedia est toujours dans le wikicode, ainsi il signifie qu'il y a beaucoup de marge bénéficiaire bénéficiaire appliqué qui ne regarde pas très gentil sur des pages Web sans davantage d'analyse. Tellement tout le marge bénéficiaire bénéficiaire de Wikipedia doit être enlevé, ou remplacé par ses équivalents dans le HTML ou le BBCode. Quand cela est tout fait, l'extrait de l'information peut être sauvé localement, et est prêt pour l'affichage sur la page Web !
Traiter des pages de redirection et de désambiguisation
Cette méthode cherchante recherche des pages d'information sur des pays, des états/provinces et des villes. Ainsi, basé sur une entrée des noms de lieu, ce manuscrit assume l'existence d'un nom d'article et essaye de chercher cet URL (par exemple wikipedia.org/wiki/New_York). Cela établit seulement immédiatement dans un certain nombre de cas. Parfois un article nommé sera réorienté à une autre page. Sur le site Web de Wikipedia la redirection a lieu immédiatement. Dans les alimentations de XML ce n'est pas le cas : le seul texte que vous trouverez est « #REDIRECT [[nom de page]] ». Le manuscrit a dû identifier ceci aussi bien, et cherchent et puis analysent la page correcte de Wikipedia à la place.
Alors il y a les pages de désambiguisation. Celles-ci peuvent être distinguées des pages d'article parce que le wikicode l'un ou l'autre contiendra {{disambig}} ou {{des geodis}}, suivies ou précédées par une liste d'articles possibles. La prochaine question est : quelle page est la correcte ? On pourrait aller faire environ ceci par l'analyse de sémantique, mais c'est tout à fait un défi d'IR.
Heureusement, la désambiguisation dans ce projet peut être manipulée un sort entier plus facile. La chose est que des articles sur des villes sont habituellement appelés « ville », « ville, province » ou « ville, pays ». Depuis l'état et le pays l'information est déjà disponible dans mon ensemble de données de destination, la conclusion des pages de désambiguisation peut être surmontée en cherchant et en analysant ces noms alternatifs d'article.
En conclusion
Dans ce poteau j'ai décrit ma méthode pour rechercher automatiquement un extrait approprié de l'information de Wikipedia sur des destinations (villes, provinces, pays) d'un ensemble de noms. J'ai établi une fonction générique de PHP qui fait ceci par elle-même ; elle simplement doit être alimentée des noms d'endroit. Le manuscrit fonctionne maintenant une fois par semaine sur mon web server comme cronjob et cherche les extraits de l'information de Wikipedia qui seront montrés à de nouvelles pages de destination du site Web de voyage (le manuscrit régénère également l'information aux pages déjà existantes, de sorte qu'il reste dans la synchro avec les derniers changements d'article de Wikipedia). L'indice de réussite de cette méthode est tout à fait satisfaisant : J'estime que pour environ 95% de tous les endroits un extrait de l'information pourrait être identifié correctement. Le manuscrit m'a pris un bon après-midi pour programmer, mais continuera à rechercher des extraits des informations importantes, n'importe comment beaucoup de nouvelles pages de destination seront ajoutées à mon site Web de voyage.
Mise à jour. Un exemple de phase de cette fonction de PHP peut être trouvé chez http://www.fuzzytravel.com/sandbox/wikithis.php.
Mise à jour 2. J'ai rendu le code de fonction disponible : wikithisphp.txt.