Leo un texto en R usando la función readChar()
. Mi objetivo es probar la hipótesis de que las oraciones del texto tienen tantas ocurrencias de la letra "a" como las ocurrencias de la letra "b". Recientemente descubrí el paquete {stringr}
, que me ayudó mucho a hacer cosas útiles con mi texto, como contar el número de caracteres y el número total de ocurrencias de cada letra en el texto completo. Ahora, necesito saber el número de oraciones en todo el texto. ¿Tiene R alguna función, que puede ayudarme a hacer eso? ¡Muchas gracias!¿Cómo contar el número de oraciones en un texto en R?
Respuesta
Gracias @ gui11aume por su respuesta. Un muy buen paquete que acabo de encontrar que puede ayudar a hacer el trabajo es {openNLP}
. Este es el código para hacer eso:
install.packages("openNLP") ## Installs the required natural language processing (NLP) package
install.packages("openNLPmodels.en") ## Installs the model files for the English language
library(openNLP) ## Loads the package for use in the task
library(openNLPmodels.en) ## Loads the model files for the English language
text = "Dr. Brown and Mrs. Theresa will be away from a very long time!!! I can't wait to see them again." ## This sentence has unusual punctuation as suggested by @gui11aume
x = sentDetect(text, language = "en") ## sentDetect() is the function to use. It detects and seperates sentences in a text. The first argument is the string vector (or text) and the second argument is the language.
x ## Displays the different sentences in the string vector (or text).
[1] "Dr. Brown and Mrs. Theresa will be away from a very long time!!! "
[2] "I can't wait to see them again."
length(x) ## Displays the number of sentences in the string vector (or text).
[1] 2
El paquete {openNLP}
es realmente grande para el procesamiento del lenguaje natural en R y se puede encontrar una introducción buena y corta a lo here o se puede revisar la documentación del paquete de here.
Tres idiomas más son compatibles con el paquete. Solo necesita instalar y cargar los archivos de modelo correspondientes.
{openNLPmodels.es}
de español{openNLPmodels.ge}
para el alemán{openNLPmodels.th}
para tailandés
Lo que está buscando es la tokenización de oraciones, y no es tan sencillo como parece, incluso en inglés (frases como "Conocí al Dr. Bennett, el ex marido de la Sra. Johson." Pueden contener puntos) .
R es definitivamente no la mejor opción para el procesamiento del lenguaje natural. Si es Python competente, le sugiero que eche un vistazo al módulo nltk, que cubre este y muchos otros temas. También puede copiar el código de this blog post, que hace tokenización de oraciones y tokenización de palabras.
Si desea seguir con R, le sugiero que cuente los caracteres de fin de frase (.
, ?
, !
), ya que puede contar caracteres. Una forma de hacerlo con una expresión regular es así:
text <- 'Hello world!! Here are two sentences for you...'
length(gregexpr('[[:alnum:] ][.!?]', text)[[1]])
¿Por qué es R no es una buena opción, @SavedByJESUS parece haber encontrado un paquete que contiene una función de dividir el texto en oraciones Además, su solución en R no es realmente una solución por las razones que se da a sí mismo, p. Dr. Fastolfe. –
@PaulHiemstra R es un lenguaje de programación de rápido crecimiento con todos los paquetes adicionales que se agregan a diario que es difícil mantenerse al día con todo :) – SavedByJESUS
- 1. cómo encontrar oraciones/frases similares en R?
- 2. Expresión regular para contar las oraciones en un bloque de texto
- 3. ¿Cómo obtener el número de oraciones de entrada?
- 4. MongoDB: ¿cómo contar el número de claves en un documento?
- 5. ¿Cómo contar el número de filas en un jqGrid?
- 6. Dividir texto en oraciones en C#
- 7. Cómo contar el número de filas en PowerShell
- 8. Cómo contar el número de combinaciones de datos booleanos en R
- 9. Contar el número de valores de vector en el rango con R
- 10. Limite el número de oraciones en una cadena
- 11. Cómo contar el número de valores numéricos en una columna
- 12. Cómo contar el número de registros en sqlite en Android
- 13. Contar el número de coincidencias
- 14. Contar el número de archivos en un directorio utilizando Java
- 15. Contar el número de apariciones de token en un archivo
- 16. Ruby: contar el número de 1 de un número binario
- 17. No se puede contar el número de coincidencias en Vim
- 18. Contar y mostrar el número de caracteres en un cuadro de texto usando Javascript
- 19. Contar el número de objetos en la lista
- 20. Contar el número de bits puestos en un entero
- 21. ¿Cuenta el número de palabras en una cadena en R?
- 22. Contar filas en un archivo de texto
- 23. Dividir un número en R
- 24. Texto difuso (oraciones/títulos) coincidente en C#
- 25. cómo contar el número de objetos creados en C++
- 26. ¿Cómo contar el número de letras en una cadena aleatoria?
- 27. Cómo contar el número de elementos en el conjunto de consulta sin contar()
- 28. ¿Cómo obtener el número de líneas en un área de texto?
- 29. ¿Contar el número de palabras coincidentes en sol?
- 30. cómo contar el número de usuarios activos en kernel
La función sentDetect no está disponible en ningún paquete .... –
@ManojKumar En realidad, el paquete 'openNLP' fue cambiado drásticamente hace unos años. Verifique la segunda respuesta en esta pregunta: http://stackoverflow.com/questions/18370518/r-opennlp-could-not-find-function-sentdetect – SavedByJESUS