- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在修补域名查找器,并希望使用那些容易发音的单词。
示例:nameoic.com(差)与 namelet.com(好)。
我认为与 soundex 相关的东西可能是合适的,但看起来我不能用它们来产生某种比较分数。
获胜的 PHP 代码。
最佳答案
这是一个适用于最常见单词的函数......它应该会给你一个介于 1(根据规则的完美发音)到 0 之间的良好结果。
以下函数远非完美(它不太喜欢 Tsunami [0.857] 之类的词)。但它应该很容易根据您的需要进行调整。
<?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 empty string
if ($len == 0) return 0;
$score = 0;
$pos = 0;
while ($pos < $len) {
// Check if is allowed composites
foreach ($composites as $comp) {
$complen = strlen($comp);
if (($pos + $complen) < $len) {
$check = substr($word, $pos, $complen);
if ($check == $comp) {
$score += $complen;
$pos += $complen;
continue 2;
}
}
}
// Is it a vowel? If so, check if previous wasn't a vowel too.
if (in_array($word[$pos], $vowels)) {
if (($pos - 1) >= 0 && !in_array($word[$pos - 1], $vowels)) {
$score += 1;
$pos += 1;
continue;
}
} else { // Not a vowel, check if next one is, or if is end of word
if (($pos + 1) < $len && in_array($word[$pos + 1], $vowels)) {
$score += 2;
$pos += 2;
continue;
} elseif (($pos + 1) == $len) {
$score += 1;
break;
}
}
$pos += 1;
}
return $score / $len;
}
关于php - 衡量一个词的发音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1186213/
有两个语音样本(在wav或mp3中)。需要比较两者并设置比较系数。 需要训练像Rosetta Stone这样的发音。 .net更喜欢libs。 最佳答案 从.NET Framework中的System
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, over
当 VoiceOver 打开时,我想控制我的应用程序的发音方式。例如,如果我的应用名为“BLOT”,目前发音为“BLAUGHT”——我想要的发音是“BLOAT”。我这可能吗?我进行了研究,发现有一些方
scss基本上是sass功能的改进实现。我的工作区使用.scss文件。什么是正确的或通用的方式来指代scss时说?我们刚刚把这些文件称为“sass”文件。在只使用scss而不使用sass文件的环境中,
我有一个名为 enunciate 的 maven 插件,它可以生成很好的 API 文档。我宁愿使用 Gradle 作为我的构建工具,但它似乎在这方面受到限制,或者我只是不知道如何使用它。 我想知道是否
我是一名优秀的程序员,十分优秀!