2010-09-17 2 views
0

Existe-t-il une bibliothèque permettant de déterminer si une chaîne de caractères contient une "phrase réelle" en anglais, ce qui signifie qu'elle contient des mots de l'anglais? (La phrase n'a pas besoin de sens, mais il devrait contenir de vrais mots anglais)Détection si une chaîne contient une "phrase réelle"?


Par exemple, ce qui suit est pas une phrase (au moins en anglais :) -

hsgdhjf asdf dsusdf udfhpiew 
+3

"Qu'est-ce que ... A. Véritable phrase?" demanda William Shatner. –

+2

Les idées vertes et incolores dorment-elles furieusement? Le silence vertébral indispose la voile licite, le gostak distims les doshes. Chaînes de Markov FTW! – Juliet

+0

Mis à jour la question pour faire ce que je voulais dire plus clair – Zabba

Répondre

3

Ceci est un problème non résolu, car les ordinateurs n'ont aucune idée de ce qui "a du sens". Même s'il essaie d'analyser une phrase en détectant des noms, des verbes, etc., il y a toujours des phrases comme "colorless green ideas sleep furiously" ou "Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo" qui passeraient. Je doute que beaucoup de gens diraient que ce sont des phrases.

Il y a aussi plusieurs façons de phrases analyse syntaxique, par exemple « Le temps passe vite comme une flèche, les mouches des fruits comme une banane » peut être analysé comme:

  • adjectif substantif verbe article substantif; nom verbe préposition article nom
  • substantif verbe préposition article nom; adjectif nom verbe article nom

pour prendre seulement deux façons.

La ligne du bas: l'analyse du langage naturel est dur, et de donner un sens à cela est encore plus difficile.

+0

Note de côté: des deux analyses énumérées ci-dessus (il y en a d'autres), la première n'a pas de sens parce que , autant que nous le sachions, il n'y a pas de choses telles que «le temps passe vite». La seconde moitié de la première analyse a du sens, bien sûr. – DMI

+0

Je pense que tout ce qui l'intéresse vraiment, c'est de placer tous les mots d'une phrase dans un tableau et de les qualifier un par un contre une base de données de dictionnaire, ce qui serait lent, mais ferait ce qu'il voulait. – MaQleod

+0

Oui - puisque la question a été mise à jour :-) La question initiale était ambiguë, alors j'ai supposé que la question la plus difficile était posée. En remarque, une recherche de dictionnaire ne doit pas nécessairement être aussi lente, en supposant qu'elle soit bien stockée (par ex.DAWG) – DMI

3

Vous pouvez faire en sorte que tous les le mot est orthographié correctement en utilisant un vérificateur d'orthographe (il y a un certain nombre de bibliothèques pour cela, dont je n'ai pas utilisé) mais qui ne vous dira toujours pas si la phrase est grammaticale. De plus, un anglophone considérerait probablement une phrase "réelle" même si elle a eu quelques erreurs, et que certains mots ne sont pas dans le dictionnaire.

La meilleure façon de faire cela reste d'avoir votre programme montrer la phrase présumée à un être humain qui parle anglais, et demandez-lui s'il s'agit d'une «vraie phrase».