Je cherche un moyen de déterminer automatiquement la langue naturelle utilisée par une page de site Web, compte tenu de son URL.
en Python, une fonction comme: p> Résumé des résultats:
J'ai une solution raisonnable qui travaille en python en utilisant code de la PYPI pour oise.langdet < / a>.
Il fait un travail décent dans la discrimination anglais vs non-anglais, qui est tout ce dont j'exige pour le moment. Notez que vous devez récupérer le HTML à l'aide de Python Urllib. En outre, oise.langdet est une licence GPL. P> Pour une solution plus générale à l'aide de Trigrams à Python, d'autres ont suggéré, voir cette Recette de recettes de recettes Python de Activestate . P> L'API de détection de langue naturelle Google fonctionne très bien (sinon le meilleur que j'ai vu). Cependant, c'est JavaScript et leur TOS interdit automatisent son utilisation. P> P>
7 Réponses :
NLTK pourrait vous aider (si vous devez vous mettre à traiter avec le texte de la page, c'est-à-dire si le les en-têtes et l'URL lui-même ne déterminent pas suffisamment la langue à vos besoins); Je ne pense pas que NLTK offre directement un "Dis-moi quelle langue ce texte est dans" la fonction "(bien que NLTK soit grande et en croissance continue, il pourrait en fait l'avoir), mais vous pouvez essayer d'analyser le texte donné en fonction de diverses langages naturels et vérifiant ceux qui donnent l'analyse la plus judicieuse, les motsset, etc. selon les règles de chaque langue. P>
Il n'y a pas de méthode générale qui fonctionnera uniquement sur les URL. Vous pouvez vérifier le Domaine de niveau supérieur pour avoir une idée et rechercher des portions de L'URL qui pourrait indiquer une langue (comme «EN» ou «ES» entre deux barres obliques) et assumer quoi que ce soit inconnu est en anglais, mais ce n'est pas une solution parfaite. P>
Autant que je sache, le seul moyen général de déterminer la langue naturelle utilisée par une page est de saisir le texte de la page et de vérifier certains mots communs dans chaque langue. Par exemple, si "A", "AN", et "THE" apparaissent plusieurs fois dans la page, il est probable qu'il inclut du texte anglais; "el" et "la" pourrait suggérer l'espagnol; et ainsi de suite. p>
Votre meilleur pari est vraiment d'utiliser Détection de langue naturelle de Google API. Il renvoie un code ISO pour la langue de la page, avec un indice de probabilité. p>
voir http://code.google.com/apis/ajaxlanguage/documentation/ < / a> p>
Il n'y a rien à propos de l'URL elle-même qui indiquera la langue.
Une option serait d'utiliser un langue naturelle Toolkit Pour essayer d'identifier la langue basée sur le contenu, mais même si vous pouvez obtenir la partie NLP de fonctionner, ce sera assez lent. En outre, cela peut ne pas être fiable. N'oubliez pas que la plupart des agents d'utilisateurs passent quelque chose comme p> avec chaque requête et de nombreux grands sites Web serviront un contenu différent en fonction de cet en-tête. Les sites plus petits seront plus fiables car ils ne feront pas attention aux en-têtes de langue. P> Vous pouvez également utiliser l'emplacement du serveur (c'est-à-dire quel pays le serveur est dans le serveur) en tant que proxy pour la langue à l'aide de GEOIP . Il n'est évidemment pas parfait, mais c'est beaucoup mieux que d'utiliser le TLD. P> P>
La géolocalisation est totalement inutile. Le monde a beaucoup d'endroits où plusieurs langues coexistent. Et des sites Web peuvent également proposer plusieurs langues
Tout ce que j'ai dit, c'était que c'est mieux que TLD, que certaines personnes suggèrent et que j'ai abordé la question de plusieurs langues.
Ceci est généralement accompli en utilisant des modèles N-GRAM de caractères. Vous pouvez trouver ici un identifiant de langue de pointe pour Java. Si vous avez besoin d'aide pour la convertir en Python, demandez simplement. J'espère que ça vous aide. P>
Vous voudrez peut-être essayer la détection basée sur NGRAM. P>
TextCat Démo Strong> A > (LGPL) semble fonctionner assez bien (reconnaît près de 70 langues). Il y a un port Python fourni par Thomas Mangin ici en utilisant le même corpus. P>
EDIT: textcat Page de concurrents fournit des liens intéressants aussi . p>
EDIT2: Je me demande si vous faites un wrapper Python pour http://www.mnogosearch.org/guesser/ serait difficile ... p>
en Python, le package LangDetect ( trouvé ici ) peut faire cela. Il est basé sur la détection et les supports de langue automatique de Googles par défaut 55 langues.
Il est installé en utilisant P>
from langdetect import detect detect("War doesn't show who's right, just who's left.") detect("Ein, zwei, drei, vier")