Мені потрібно знайти досить ефективний спосіб виявлення складів у слові. Наприклад,
Невидимий -> in-vi-sib-le
Є деякі правила конспектування, які можна використовувати:
V CV VC CVC CCV CCCV CCCC CVCC
* де V - голосний, а C - приголосний. Наприклад,
Вимова (5 Pro-nun-ci-a -ation; CV-CVC-CV-V-CVC)
Я спробував декілька методів, серед яких було використання регулярного вираження (яке допомагає лише у тому випадку, якщо ви хочете порахувати склади) або визначення жорсткого кодування правил (грубий підхід, який виявляється дуже неефективним) і, нарешті, використання автоматизованих систем кінцевого стану (що зробив не привести нічого корисного).
Мета моєї програми - створити словник усіх складів на даній мові. Цей словник згодом буде використовуватися для перевірки орфографії (за допомогою байєсівських класифікаторів) та синтезу тексту в мові.
Буду вдячний, якби можна було дати мені поради щодо альтернативного способу вирішення цієї проблеми, окрім попередніх підходів.
Я працюю на Java, але будь-яка порада в C / C ++, C #, Python, Perl ... працювала б для мене.