我想以编程方式检查字符串是否可以发音或需要拼写出来.
例如,internationalization可以读出,但i18n不能,也不能hhdirgxzf.
我可以想到一些简单的启发式方法,例如检查字符串是否包含非字母字符,但我希望有更强大和科学的方法来实现它.是否有算法方法可以根据发音的容易程度对字符串进行评分?
相关:有没有办法对一个单词的发音难度进行排名?,但我没有列表,我无法预先计算.
根据评论更新.
hhdirgxzf但它不会发出一个自然语言单词,它需要被打破.我正在努力寻找/创建一个可以确定随机5个字母组合的可读性的算法.
到目前为止,我发现的最接近的是来自这个3岁的StackOverflow线程:
<?php
// Score: 1
echo pronounceability('namelet') . "\n";
// Score: 0.71428571428571
echo pronounceability('nameoic') . "\n";
function pronounceability($word) {
static $vowels = array
(
'a',
'e',
'i',
'o',
'u',
'y'
);
static $composites = array
(
'mm',
'll',
'th',
'ing'
);
if (!is_string($word)) return false;
// Remove non letters and put in lowercase
$word = preg_replace('/[^a-z]/i', '', $word);
$word = strtolower($word);
// Special case
if ($word == 'a') return 1;
$len = strlen($word);
// Let's not parse an …Run Code Online (Sandbox Code Playgroud)