2012-05-08 4 views
2

Я пишу фрагмент кода в C++, где мне нужно слово для конвертера слога, есть ли доступный стандартный алгоритм с открытым исходным кодом или любые другие ссылки, которые могут помочь мне его построить.word to syllable converter

for a word like invisible syllable would be in-viz-uh-ble 

он должен быть в идеале способен анализировать сложные слова типа «невидимый».

Я уже нашел ссылку для алгоритма в Perl и Python, но я хочу знать, если библиотека доступна в C++

Большое спасибо.

+0

Каково приложение? – log0

+0

Я не думаю, что это возможно для английского языка без словаря. Английский язык потерял это сопоставление 1-к-1 между орфографией и произношением до степени, что даже количество слогов не является атрибутом орфографии. – skyking

ответ

4

В вашем примере показано фонетическое представление слова, а не просто разделение на слоги. Это сложная проблема НЛП.

Посмотрите на soundex и metaphone. Для обоих есть реализация C/C++.

Также многие словари содержат нотацию слов IPA. Посмотрите API Викисловарь.

+0

Soundex и metaphone являются алгоритмами хеширования, они не транскрипции. –

+0

Технически они являются грубыми фонетическими транскрипциями. Очень разрушительный с soundex, более консервант с метафоном. Оба более или менее отбрасывают гласные, поэтому я допускаю, что это может быть не интересно в зависимости от того, как OP их использует. – log0

+0

Возможно, вы захотите исследовать мою реализацию [double_metaphone] (https://github.com/pixelglow/double_metaphone) в C++ 11. Он имеет параметр обратного вызова, который позволяет восстанавливать оригинальные гласные или отмечать отдельные части исходного слова, что примерно соответствует слогам. –

0

Для обнаружения слогов в словах вы можете адаптировать мой проект к вашим потребностям. Это называется tinyhyphenator.

Он дает вам целочисленный список всех возможных расшифровки индексов внутри слова. Для немца это совершенно точно. Вам нужно будет получить список индексов и вставить дефисы самостоятельно.

Под «адаптированием» я имею в виду добавление спецификации английских слогов. Взгляните на исходный код, он должен быть вполне объяснительным.