Взрывая аббревиатуры, чтобы убедиться, что синтезатор читает их правильно?

StackOverflow https://stackoverflow.com/questions/3745257

Вопрос

Если я кормию речевой синтезатор (фестиваль в этом случае, но это относится к всем) следующий бит текста:

«На Чемпионате USPGA в США журналист BBC пошел Миа». Он читает «На Чемпионате USPGA в США, репортер BBC пошел Миа».

Другими словами, я думаю, что потому, что это кластер согласных, он читает «BBC» правильно, но делает «слова» из других.

Самое простая вещь, я полагаю, будет проходить через скрипт PHP, который искал 2 или более заглавных букв, и просто «взрывается» слово в пробелы, как USPG A.

Я понимаю, что это заставило бы странность с такими вещами, как «Я сказал ему, что не делать этого», но в новостях, которые имеют тенденцию происходить меньше.

Вот вещь; Я могу «взорвать» слово в порядке, проблема в том, что я один из тех людей, которые, несмотря на несколько месяцев попытки, просто не могут занять голову вокруг определенных аспектов Regex. В этом случае он ищет: две или более буквы рядом друг с другом в столицах.

Причина, по которой я дал все преждевременно, в том случае, если есть лучший способ сделать это, я не нашел или через - возможно, БД аббревиатуры к словам или что-то.

Это было полезно?

Решение

Использование регулярного выражения DELAN с preg_replace_Callback () позволяет очень легко установить одно пространство между всеми буквами идентифицированных аббревиатур

$input = "At the USPGA championship in the US, the BBC reporter went MIA";

function cb_separateCapitals($matches) {
    return implode(' ',str_split($matches[0]));
}


echo $input,'<br />';

$output = preg_replace_callback('/\b([A-Z]{2,})\b/','cb_separateCapitals',$input);

echo $output;

давать

На Чемпионате USPGA в США репортер BBC пошел Миа

На Чемпионате USPGA в США репортер BBC пошел Миа

Другие советы

Узор для соответствия аббревиатурам:

/\b([A-Z]{2,})\b/

Это соответствует любому «слову» с двумя или более капиталами.

Вы можете значительно упростить свой код, используя Поиск Утверждение

$input = "At the USPGA championship in the US, the BBC reporter went MIA";
echo preg_replace('~[A-Z](?=[A-Z])~', '$0 ', $input);

[A-Z](?=[A-Z]) говорит: «Каждый капитал, сопровождаемый капиталом»

"[A-Z][A-Z]" будет соответствовать любому экземпляру двух заглавных букв рядом друг с другом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top