2009-07-22 5 views
9

Je cherche un moyen de déterminer automatiquement le langage naturel utilisé par une page de site Web, compte tenu de son URL.Déterminer automatiquement le langage naturel d'une page Web donné son URL

En Python, une fonction comme:

def LanguageUsed (url): 
    #stuff 

qui retourne un spécificateur de langue (par exemple, 'en' pour l'anglais, 'jp' pour le japonais, etc ...)

Sommaire des résultats: J'ai une solution raisonnable de travailler en Python en utilisant code from the PyPi for oice.langdet. Il fait un travail décent en distinguant anglais et non-anglais, ce qui est tout ce dont j'ai besoin pour le moment. Notez que vous devez récupérer le code HTML en utilisant Python urllib. En outre, oice.langdet est une licence GPL.

Pour une solution plus générale utilisant Trigrams en Python comme d'autres l'ont suggéré, voir ceci Python Cookbook Recipe from ActiveState. L'API Google Natural Language Detection fonctionne très bien (si ce n'est la meilleure que j'ai vue). Cependant, c'est Javascript et leur TOS interdit d'automatiser son utilisation.

Répondre

8

Ceci est généralement accompli en utilisant des modèles de n-gramme de caractères. Vous pouvez trouver here un identifiant de langue de pointe pour Java. Si vous avez besoin d'aide pour le convertir en Python, il suffit de demander. J'espère que cela aide.

1

nltk peut vous aider (si vous devez vous occuper du texte de la page, c'est-à-dire si les en-têtes et l'URL elle-même ne permettent pas de déterminer la langue correctement); Je ne pense pas que NLTK offre directement une fonction «dites-moi en quelle langue est ce texte» (bien que NLTK soit grand et continue de grandir, donc il pourrait en fait l'avoir), mais vous pouvez essayer d'analyser le texte langages naturels et en vérifiant lesquels donnent l'analyse la plus sensible, wordset, & c, selon les règles pour chaque langue.

0

Aucune méthode générale ne fonctionne uniquement sur les URL. Vous pouvez vérifier le top-level domain pour avoir une idée, et chercher des parties de l'URL qui pourraient être indicatives d'une langue (comme "en" ou "es" entre deux barres obliques), et supposer que quelque chose d'inconnu est en anglais, mais ce n'est pas t une solution parfaite. Pour autant que je sache, la seule façon générale de déterminer le langage naturel utilisé 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 en anglais; "el" et "la" pourraient suggérer l'espagnol; etc.

3

Il n'y a rien sur l'URL lui-même qui indiquera la langue. Une option consisterait à utiliser un natural language toolkit pour essayer d'identifier la langue en fonction du contenu, mais même si la partie NLP fonctionne, elle sera plutôt lente. En outre, il peut ne pas être fiable. Rappelez-vous, la plupart des agents d'utilisateur passent quelque chose comme

Accept-Language: en-US 

avec chaque demande, et de nombreux sites Web de grande envergure auront un contenu différent en fonction de cet en-tête. Les sites plus petits seront plus fiables car ils ne porteront pas attention aux en-têtes de langue.

Vous pouvez également utiliser l'emplacement du serveur (c'est-à-dire le pays dans lequel se trouve le serveur) en tant que proxy pour la langue en utilisant GeoIP.Ce n'est évidemment pas parfait, mais c'est beaucoup mieux que d'utiliser le TLD.

+0

est tout à fait inutile Géolocalisation. Le monde a beaucoup d'endroits où plusieurs langues coexistent. Et les sites Web peuvent également avoir plusieurs langues –

+0

Tout ce que j'ai dit, c'est que c'est mieux que TLD, ce que certaines personnes suggèrent, et j'ai abordé le problème des langues multiples. – tghw

3

Vous pouvez essayer la détection basée sur ngram.

TextCat DEMO (LGPL) semble fonctionner plutôt bien (reconnaît près de 70 langues). Il existe un port python fourni par Thomas Manginhere utilisant le même corpus.

Editer: TextCat competitors page fournit également des liens intéressants.

Edit2: Je me demande si faire un wrapper python pour http://www.mnogosearch.org/guesser/ serait difficile ...

Questions connexes