kmp algoritmos string algorithm

string - algoritmos - kmp algorithm python



Contando sílabas en una palabra (4)

Estoy buscando una declaración totalmente precisa de un algoritmo para contar sílabas en palabras. Lo que encuentro cuando investigo es inconsistente o lo que sé para generar resultados incorrectos. ¿Alguien tiene alguna sugerencia de cómo lograr esto? Gracias.

El algoritmo que estoy usando ahora:

  1. Cuenta el número de vocales en la palabra.
  2. No cuente las vocales dobles ("lluvia" tiene 2 vocales pero es solo 1 sílaba)
  3. Si la última letra de la palabra es la vocal, no cuente ("lado" es 1 sílaba)

¿Hay más reglas que me faltan? Estoy tratando de determinar en la prueba de mis resultados incorrectos si el algoritmo que estoy usando es incorrecto o si lo implemento.


Estoy buscando una declaración totalmente precisa de un algoritmo para contar sílabas en palabras

No hay uno Período. Cualquiera que sea el algoritmo que inventes, prometo encontrar un contraejemplo. En ciertos idiomas (vienen a la mente el armenio y el ruso) el algoritmo es bastante sencillo: cuente el número de vocales. En otros idiomas, como el alemán, no es tan sencillo, pero aún así es factible. En inglés, me temo, la transducción entre letras y sonidos es absolutamente irregular.

Por ejemplo,

coincidencia oi debe contarse como dos sílabas. Pero en ebullición es solo una sílaba. Además, no contar la vocal final no siempre es exacto. Considere el nombre de Penélope o Hermione . O plátano

Otro caso curioso es cuando la sílaba existe sin una vocal impresa. Por ejemplo, tabla es una palabra bisilábica, pero la segunda sílaba es generada por el sonido invisible entre by l . Además, no se olvide de las palabras originadas en latín, que pueden tener muchas vocales consecutivas. Ej. Onomatopeya .

Por lo tanto, no hay un algoritmo preciso. La única forma en que puede ir es tratar de encontrar un algoritmo que funcione en muchos casos (estoy evitando la palabra). Pero en este caso debes redefinir tus requerimientos.


Lo que necesita es un diccionario para mapear la ortografía regular de las palabras en inglés a sus equivalentes del Alfabeto Fonético Internacional . Esto tiene representaciones más precisas de sílabas en las palabras. A partir de eso, puede hacer un recuento de sílabas más preciso, pero eso no tiene en cuenta las variaciones en las pronunciaciones.


Pregunta antigua, pero aún así, la gente probablemente la lea de vez en cuando y es una pregunta abierta.

Las palabras no se forman a partir de sílabas discretas, bien definidas y acordadas. Intenta lo mejor para separar el lenguaje en sílabas, y la forma en que lo haga depende del propósito: algunas son más fonéticas, otras se basan más en la ortografía.

Los métodos fonéticos producen resultados diferentes en función del acento o dialecto del hablante y de la claridad con la que cada individuo está hablando en un momento determinado. En algunos métodos fonéticos, las sílabas comparten sonidos, es decir, el último sonido en una sílaba puede ser el primero en la siguiente, y esto puede cruzar los límites de las palabras.

Lo que se enseña en las escuelas (si la escuela se molesta en absoluto) a menudo es una mezcla de ortografía y reglas fonéticas diseñadas para ayudar a los niños a deletrear. Intentan tener algunas reglas memorables que funcionan la mayor parte del tiempo, no están destinadas a ser 100% correctas o exhaustivas.

Con cualquier método en particular, es probable que encuentres cosas que no te suenen bien.

Ahora la respuesta: para una métrica de legibilidad, no importará mucho qué método se use. Incluso solo contar letras en las palabras (o vocales) puede funcionar también. Si está tratando de igualar los resultados de otra persona, entonces necesita conocer su método.


Ambiguity es un gran problema en el procesamiento del lenguaje natural, pero algunas tareas pueden manejarse con la precisión con buena precisión. Resulta que la silabeo es uno de ellos, así que no escuches las otras respuestas. :)

Silabeo

Basado en heuristica

Podría idear algoritmos que logren la silabificación correcta prácticamente en todo el vocabulario en inglés , pero parece complicado programar correctamente.

Basado en corpus

Como siempre, cuando los algoritmos hechos a mano no ayudan demasiado, los investigadores de Procesamiento del Lenguaje Natural usan cuerpos etiquetados a mano que contienen las respuestas correctas para palabras dadas. Los algoritmos de aprendizaje se utilizan y, a menudo, proporcionan una gran precisión. Puede utilizar la sílaba de LingPipe (ver "Sílaba de inglés") que sigue este enfoque.

Lista exhaustiva

El inglés solo tiene tantas palabras, que es como se nos ocurrieron los diccionarios. Tales diccionarios a menudo contienen la silabificación correcta. Usted podría raspar reference.com. Por ejemplo, la entrada ondulada contiene «un · du · late», que es suficiente para saber que hay tres sílabas.

Otros diccionarios de este tipo incluyen Answers.com , The Free Dictionary , Merriam-Webster , etc. Lea los Términos y Condiciones, la recuperación automática puede no estar permitida. Y los diferentes diccionarios no always agree entre sí.

No ayudará con nuevas palabras o nombres propios, pero diría que va a ser el método más preciso.

Acerca de la separación

Otro problema relacionado se expuso mucho más: la separación de palabras. ¡Pero no uses eso! Se utiliza en programas de composición tipográfica como LaTeX , pero solo pretende proporcionar algunos de los guiones correctos, sin proporcionar nunca uno incorrecto (alta precisión, baja recuperación). Es interesante notar que solo hay 14 excepciones, ej. Proyecto que tiene una separación diferente en función de la parte del discurso (verbo o sustantivo).

Programas de separación

Si decide que es suficiente para sus necesidades, tenga en cuenta que existen algunas implementaciones del algoritmo de separación de palabras TeX en otros idiomas, como Python, Perl o Ruby .