gsk3 является правильным: если вы хотите правильное решение , это нетривиально .
Например, вы должны следить за странными вещами, такими как молчание e в конце слова (например, pane ), или знать, когда он не молчит, как в финал .
Однако, если вы просто хотите быстрое и грязное приближение , это сделает это:
> nchar( gsub( "[^X]", "", gsub( "[aeiouy]+", "X", tolower( x ))))
[1] 1 1 2 2 1 3
Чтобы понять, как работают детали, просто уберите вызовы функций извне, начиная с nchar
, а затем gsub
и т. Д. ... ... до тех пор, пока это выражение не станет для вас понятным.
Но я предполагаю, что, учитывая борьбу силы R против обилия исключений в английском языке, вы могли бы получить приличный ответ (может быть, 99%, верно?), Анализируя обычный текст, без большой работы - черт, простой парсер выше может получить 90% + правильно. Приложив немного больше работы, вы можете справиться с бесшумными электронными сообщениями, если хотите.
Все зависит от вашего приложения - достаточно ли это или вам нужно что-то более точное.