7
votes

Extraction du nom de pays d'affiliations de l'auteur

Je suis actuellement en train d'explorer la possibilité d'extraire le nom de pays des affiliations de l'auteur (articles PubMed), mes données d'échantillons ressemblent à:

Département d'ingénierie mécanique et de production, Université nationale de Singapour.

Campagne de recherche sur le cancer Groupe de réparation d'ADN de cellules de mammifère, département de zoologie, Cambridge, U.k.

Cancer de la recherche sur le cancer groupe de réparation d'ADN de la cellule mammifère, département de zoologie, Cambridge, Royaume-Uni.

Laboratoires de recherche Lilly, Eli Lilly et Société, Indianapolis, en 46285.

Au départ, j'ai essayé de supprimer les ponctuations et de scinder le vecteur en mots, puis de la comparé avec une liste de noms de pays de Wikipedia, mais je ne réussis pas à cela.

Quelqu'un peut-il me suggérer une meilleure façon de le faire? Je préférerais la solution dans r car je dois faire une analyse plus approfondie et générer des graphiques dans r .


2 commentaires

Vous pouvez faire mieux si vous prépayez le fichier en dehors de R, enregistrez-le comme CSV, puis utilisez R pour le reste. Google Affiner est un excellent outil pour ce type de travail.


Google Affiner fonctionne aussi bien! Merci pour la suggestion!


3 Réponses :


1
votes

Un moyen de diviser vos chaînes afin d'isoler les informations géographiques (par exemple en supprimant tout au premier coma), puis soumettez le résultat à un service de géocodage.

Par exemple, l'API Google Geocoding permet d'envoyer une adresse et de récupérer une localisation et des informations géographiques correspondantes, telles que le pays. Je ne pense pas qu'il y ait un package r prêt à le faire, mais vous pouvez trouver certaines fonctions ici, par exemple:

géocodage en R avec Google Maps

Il existe également des extensions dans d'autres langues telles que Ruby:

http://geokit.rubyforge.org/

Cela dépend également du nombre d'observations que vous avez, l'API Google gratuit, par exemple, est limitée à environ 200 adresses / IP / jour, si je me souviens bien.


0 commentaires

9
votes

Voici une solution simple qui pourrait vous aider à démarrer une partie du processus. Il utilise une base de données contenant des données de ville et de pays dans le package Maps. Si vous pouvez obtenir une meilleure base de données, il doit être simple de modifier le code.

[[1]]
[1] "Singapore"

[[2]]
[1] "UK"

[[3]]
[1] "UK"

[[4]]
character(0)


4 commentaires

Avec un service de géocodage externe, vous avez peut-être trouvé le quatrième, mais votre solution est très agréable et reste à l'intérieur de R. J'aurais suscité si j'avais des votes à gauche :-)


@juba merci. On peut développer cette solution. Par exemple, si une ville est trouvée, mais un pays n'est pas, on peut rechercher le pays pour la ville trouvée dans World.City


caa <-gsub ("[[: punct:] \ n]", "" ", aa) # fonctionne str_replace_all ne fonctionnait pas aussi llply devrait être remplacé par acadréal merci beaucoup @andrie


@NEO_ME Désolé pour Str_replace_all () - Ceci se trouve dans Package Stringr, et est une enveloppe pour GSub. Merci de me rappeler [: punct:] ce qui est clairement meilleur. Enfin, la pénlyse et l'affichage sont équivalents et c'est une question de goût.



0
votes

@ Andrie's La réponse est agréable, mais cela manque des villes et des pays qui sont plus d'un mot par exemple. Nouvelle-Zélande ou New York. Le deuxième exemple est une préoccupation telle qu'elle serait étiquetée comme une correspondance à York, au Royaume-Uni, pas New York, États-Unis.

Cette alternative doit capturer ces cas un peu mieux. P>

[[1]]
character(0)

[[2]]
[1] "Cambridge"

[[3]]
[1] "Cambridge"

[[4]]
[1] "Indianapolis"


0 commentaires