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
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.
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).
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.
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].
Pero tienes que validar eso, de lo contrario, el módulo nlp tendrá problemas. – btw0
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. –
Comprobar la Language Recognition Chart
¿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? –
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).
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.
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) .
Google tiene una API de JavaScript que tiene una implementación de detección de idioma. Solo he probado con el juego, nunca lo he usado en producción.
http://code.google.com/apis/ajaxlanguage/documentation/#Detect
Tal vez "Ensuring that the user submits only English text [PHP]" artículo le ayudará. El código está escrito en PHP, pero es lo suficientemente pequeño para ser fácilmente reescrito.
- 1. Restringir solo a los caracteres en inglés
- 2. Django: Permitir que el usuario envíe HTML válido en el campo de formulario
- 3. Google translate texto a voz en inglés
- 4. ¿Por qué asegurar el trabajo solo en otra cosa?
- 5. Deje que el usuario que utiliza el navegador móvil envíe el código de producto que desea por SMS
- 6. Pida al usuario que envíe un informe de bloqueo después del bloqueo en el iPhone
- 7. ¿Cómo decirle a Condor que envíe trabajos solo a las máquinas en el clúster, que tienen "numpy" instalado en ellas?
- 8. ¿Cómo hacer que NSSearchField envíe acción después de la autocompletación?
- 9. Gettext: ¿es una buena idea que el ID del mensaje sea el texto en inglés?
- 10. Cómo hacer que UIScrollView envíe mensajes scrollViewDidScroll durante las animaciones
- 11. ¿Cómo uso efectivamente VIM para editar texto en inglés?
- 12. Cómo hacer que la tecla "Enter" en un área de texto envíe un formulario
- 13. Asegurar que una ruta definida por el usuario sea segura en PHP
- 14. para evitar que el usuario copie el texto usando jQuery?
- 15. Jquery envíe el formulario
- 16. Asegurar contraseñas en el entorno de producción
- 17. ¿Cómo arreglar el idioma inglés en un cuadro de texto específico en el modo de idioma de entrada en árabe?
- 18. ¿Cómo verifico que una cadena está en inglés?
- 19. ¿Cómo puedo asegurar que los scripts se ejecuten usando javax.scripting?
- 20. Cómo asegurarse de que se envíe un SMS en Android
- 21. Detectando si el texto es inglés (a granel)
- 22. ¿Cómo asegurar que solo se ejecute una sola instancia de mi aplicación?
- 23. ¿Cómo asegurar que la lógica del método se ejecute solo una vez por combinación de argumentos?
- 24. Cómo asegurar que un evento solo esté suscrito a una vez
- 25. Envíe un formulario en UIWebView
- 26. ¿Cambiar color de texto a medida que el usuario escribe?
- 27. Existe un algoritmo que extrae etiquetas significativas de texto en inglés
- 28. Asegurar una solicitud de Ajax
- 29. ¿Cuál es un buen método para evitar que un usuario envíe un formulario dos veces?
- 30. Cómo analizar oraciones simples en inglés
Su segunda idea descartaría casi todos los comentarios en YouTube. – Tyson
@Tyson, genial, otra ventaja en la que no había pensado ;-) – Pat