6 Stimmen

Aussprechbarkeitsalgorithmus

Ich habe Schwierigkeiten, einen Algorithmus zu finden/zu erstellen, der die Aussprechbarkeit von zufälligen 5-Buchstaben-Kombinationen bestimmen kann.

Das bisher Ähnlichste, das ich gefunden habe, stammt aus diesem 3 Jahre alten StackOverflow-Thread:

Messen der Aussprechbarkeit eines Wortes?

= 0 && !in_array($word[$pos - 1], $vowels)) {
                        $score += 1;
                        $pos += 1;
                        continue;
                }
        } else { // Kein Vokal, überprüfe ob der nächste ein Vokal ist, oder ob es das Ende des Wortes ist
                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;
}
?>

... aber er ist bei weitem nicht perfekt und liefert einige ziemlich seltsame falsche Positiven:

Bei Verwendung dieser Funktion werden all die folgenden als aussprechbar bewertet (über 7/10)

  • ZTEDA
  • LLFDA
  • MMGDA
  • THHDA
  • RTHDA
  • XYHDA
  • VQIDA

Kann jemand, der klüger ist als ich, diesen Algorithmus vielleicht anpassen, so dass:

  • 'MM', 'LL' und 'TH' nur gültig sind, wenn sie von einem Vokal gefolgt oder gefolgt werden?
  • 3 oder mehr Konsonanten in Folge sind ein No-Go (außer wenn der erste oder letzte ein 'R' oder 'L' ist)
  • Weitere Verbesserungen, die Ihnen einfallen...

(Ich habe bereits eine beträchtliche Menge an Recherche/Googeln gemacht, und dieser scheint die wichtigste Aussprechbarkeitsfunktion zu sein, auf die sich alle seit den letzten 3 Jahren beziehen/verwenden, also bin ich sicher, dass eine aktualisierte, verfeinerte Version von der breiteren Community, nicht nur von mir, geschätzt würde!).

2voto

rossum Punkte 14800

Wie wäre es, eine ziemlich aussprechbare Kombination von Anfang an zu generieren? Ich habe etwas gemacht, bei dem ich einen zufälligen Soundex-Code generiere und von diesem aus zurückarbeite zu einem (in der Regel) aussprechbaren Ursprung.

0voto

will Punkte 23

Wenn jemand nach einer Möglichkeit sucht, dies mit Node.js zu tun, habe ich ein Modul namens pronounceable gefunden, das anscheinend implementiert, was die Antwort von Xantix beschreibt.

npm i pronounceable

Sie können es ohne Installation auf RunKit testen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X