2010-10-27 5 views
2

J'ai écrit un code qui envoie des requêtes à Google et renvoie les résultats. J'extrais les extraits (résumés) de ces résultats pour un traitement ultérieur. Cependant, parfois des mots non-anglais sont dans ces extraits que je ne les veux pas. par exemple:Suppression de mots non anglais d'une phrase en python

/\u02b0w\u025bn w\u025bn unstressed \u02b0w\u0259n w\u0259n/ 

Je ne veux que le mot "sans contrainte" dans cette phrase. Comment puis-je faire cela? merci

+0

Ce bloc de texte n'a aucun sens. –

+0

Voulez-vous des mots du dictionnaire anglais, ou seulement des mots avec seulement des caractères ASCII (même s'ils sont, disons, des noms propres comme un nom ou un lieu, ou des mots anglais mal orthographiés)? – detly

+0

@Glenn: ce sont des mots au format Unicode – Hossein

Répondre

1

Vous pouvez comparer les mots que vous recevez avec un dictionnaire de mots anglais, par exemple/usr/share/dict/words sur un système BSD.

Je suppose que les résultats de Google sont pour la plupart grammaticalement corrects, mais sinon, vous devrez peut-être chercher dans stemming afin de faire correspondre votre dictionnaire.

+0

Mis à part le fait que les résultats de Google proviennent d'Internet et sont par conséquent grammaticalement douteux au mieux, vous allez devoir faire de toute façon. Aucun fichier de mots ne contient toutes les inflexions de chaque mot. –

+0

La question est de savoir si cela est nécessaire. Avons-nous besoin d'un résultat 100% précis ou pouvons-nous vivre avec un résultat optimal? L'utilisation de dictonary + stemming peut ne pas être parfaite, mais peut très bien être suffisante pour le TS. – bastijn

1

Vous pouvez utiliser PyWordNet. C'est une interface python pour le WordNet. Il suffit de diviser votre phrase sur les espaces blancs et de vérifier que chaque mot est dans le dictionnaire.

2

PyEnchant peut être une option simple pour vous. Je ne sais pas sa vitesse, mais vous pouvez faire des choses comme:

>>> import enchant 
>>> d = enchant.Dict("en_US") 
>>> d.check("Hello") 
True 
>>> d.check("Helo") 
False 
>>> 

Un tutoriel se trouve here, il a également des options pour retourner des suggestions que vous pouvez encore pour une autre requête ou quelque chose. En outre vous pouvez vérifier si votre résultat est en latin-1 (is_utf8() exciste, ne sait pas si is_latin-1() le fait aussi, peut-être utiliser quelque chose comme Enca qui détecte l'encodage de fichiers texte, sur la base de la connaissance de leur langue.)

+0

cela permettra-t-il la ponctuation et les caractères spéciaux? L'idée est de vérifier les textes non-anglais – MANU

Questions connexes