2008-10-13 12 views
9

Estoy construyendo un proyecto que implica el procesamiento del lenguaje natural, ya que el módulo nlp actualmente solo trata con texto en inglés, así que debo asegurarme de que el usuario envió el contenido (no largo, solo varias palabras) está en inglés ¿Hay formas establecidas de lograr esto? Se prefiere Python o Javascript.Cómo asegurar que el usuario envíe solo texto en inglés

Respuesta

7

Si el contenido es lo suficientemente largo, sugeriría algunas frequency analysis en las letras.

Pero para algunas palabras, creo que su mejor opción es compararlas con un diccionario de inglés y aceptar la entrada si la mitad de ellas coinciden.

+1

Su segunda idea descartaría casi todos los comentarios en YouTube. – Tyson

+3

@Tyson, genial, otra ventaja en la que no había pensado ;-) – Pat

0

Puede dividir la frase en palabras y consultar un diccionario (hay algunas que puede descargar, this pueden ser de interés), pero eso requeriría que el diccionario que utilizó fuera lo suficientemente bueno.

También caería sobre los nombres propios (mi nombre no está en el diccionario, por ejemplo).

1

Probar:

http://wordlist.sourceforge.net/

Para obtener una lista de palabras en inglés.

Deberá tener cuidado con los nombres, p. "Canberra" o "Bill Clinton". Estos no aparecerán en la lista de palabras. Sugiero simplemente verificar si la primera letra está en mayúscula como primer intento.

5

Creo que la forma más eficaz sería pedir a los usuarios enviar texto Inglés solamente :)

Puede mostrar una lista desplegable de selección de idioma sobre el área de texto con Inglés/Otro como las opciones. Cuando el usuario selecciona "Otro", desactive el área de texto con un mensaje que solo admite el idioma inglés [en este momento].

+0

Pero tienes que validar eso, de lo contrario, el módulo nlp tendrá problemas. – btw0

+0

Sí, tienes razón. Pero en tales aplicaciones, a menudo es bueno insistir en la regla de "Basura adentro, salida de basura", por lo que hay menos errores de usuario. –

6
+0

¿Hay algún algoritmo conocido para usar este gráfico? Quiero decir, ¿calcularás puntajes para cada idioma y luego ordenarás el resultado? ¿O podemos usar un valor de umbral para cada idioma? –

3

Trate de reconocimiento de lenguaje estadístico basado en n-gramas. Este es un link a una demostración de un algoritmo que utiliza esta técnica, también hay un enlace a un documento que describe el algoritmo allí. Pruebe la demostración, funciona bastante bien incluso en textos muy cortos (3-4 palabras).

3

Ya está haciendo NLP, si su módulo no entiende qué idioma era el texto, entonces el módulo no funciona o la entrada no estaba en el idioma correcto.

0

El Dictionary Switcher extensiones de Firefox tiene una opción para detectar el diccionario correcto mientras escribo.
supongo que comprueba palabras en contra de los diccionarios instalados, y selecciona el que da los menos errores ...

No se puede esperar todas las palabras del texto que se va en el diccionario: abreviaturas, nombres propios, errores tipográficos. Además, algunas palabras son comunes a varios idiomas: un grupo de rock francés incluso hizo que los títulos de sus discos tuvieran un significado (diferente) tanto en francés como en inglés. Por lo tanto, es una cuestión estadística: si más del x% de las palabras se encuentran en un buen diccionario de inglés, es probable que el usuario escriba en este idioma (incluso si hay errores, como probablemente en esta respuesta, ya que no soy inglés nativo) .

Cuestiones relacionadas