English transliteration seems to require understanding the meaning of the expression you are transliterating. Anything that requires human-level intelligence to parse the sentence for transliteration/pronunciation I consider non-programmatic. It would be too hard to write a simple piece of software to do transliteration. Another aspect I consider out of the question is a language which requires an enormous database of words to determine their individual pronunciations.

What I would like to find are languages which I would consider programmatic. These languages can be easily implemented in software for purposes of transliteration. This is because, they have a relatively small set of of pronunciation rules (on the order of 100's of rules perhaps?), which can be explicitly defined into an algorithm. Whereas English has I would say millions of rules, because you need to memorize essentially every word and its meaning. And the algorithm might need to be statistical, which is to say, not explicit.

Hebrew seems to be a programmatic language. (If you know of others, please leave in the comments. I am particularly interested in Hebrew, Arabic, Tibetan, Chinese, Sanskrit, Tamil, Greek, and Latin.)

So I've started looking into Hebrew, and have a few questions, because these things I've come across so far seem to say it might not be "programmatic".

Can you tell programmatically when a garesh is used for a change in pronunciation vs. an abbreviation (and no change in pronunciation)? Or denoting a numeral...

In initialisms, the Geresh is written after the last letter of the initialism. For example: the title גְּבֶרֶת (literally "lady") is abbreviated גב׳, equivalent to English "Mrs" and "Ms".[7]


How about, can Matres lectionis be detected programmatically?

How about the Shve, can it be determined programmatically in Hebrew whether it is pronounced or not?


Do you need a database of words to determine the stress on words in Hebrew? Or are there clear rules that say where you stress different types of words (like on the last syllable, except on x, y, and z it's the second-to-last syllable, etc.).

Thank you.

  • 5
    You are asking a lot of questions here, and it might be a good idea to find the "core" that will help people answer with exactly what you want. If you think you need a new rule for each abbreviation (such as your גברת example), then the answer is "you will need a lot of abbreviation rewrite rules. English loanwords are also something that does not fit well into the rules. I would also say that your question is not about is the Hebrew language 'programmatic,' but rather is the Hebrew writing system 'programmatic' Mar 17, 2020 at 4:32
  • 3
    I'm also not sure "transliteration" is the word you want here. Transliteration is generally used to mean lossless (or as-lossless-as-possible) conversion from one writing system to another, like גְּבֶרֶת → gəbhereth or 𒂍 → É or θάλασσα → thálassa. But I think what you're hoping for is instead some sort of transcription, representing the phonemes or phones rather than the original graphemes. Sometimes there's a nice correspondence between graphemes and phonemes, sometimes (as in English) there isn't.
    – Draconis
    Mar 17, 2020 at 5:19
  • (And the bh and th in that Hebrew transcription should be b-with-underline and t-with-underline instead, but I can't type those on this keyboard. But you get the idea.)
    – Draconis
    Mar 17, 2020 at 5:20
  • With enough diacritics, you can do it programmatically. These are provided in the Masoretic OT but rarely in modern Hebrew. Without the diacritics, it's harder. I'll write a fuller answer shortly. Mar 17, 2020 at 12:23
  • See the algorithms and heuristics used in github.com/AnalyzePlatypus/TranslitKit. This is based on empirical data from ~200 words and works admirably. FD: I designed most of the algorithms Nov 10, 2020 at 18:04

1 Answer 1


First we have to decide which Hebrew we're talking about. Biblical Hebrew can certainly be transliterated programmatically, since Medieval scribes augmented the writing system to include disambiguating diacritics and added them to the entire corpus so that it could be read aloud.

However, the process is not so easy for Modern Hebrew, for which these diacritics are rarely added — usually only on foreign transliterations or children's learning materials. If you have a text with them, you're in luck. If not, well... Let's take a look.

Let's say that there are three categories of grapheme (letter or letter sequence):

  1. Those that have a one-to-one correspondence to a phoneme.

  2. Those that can represent different phonemes, but whose value can be determined purely by the other graphemes around it.

  3. Those that can represent different phonemes, and that require knowledge of the language (vocabulary or grammar) to differentiate.

In addition, we can use a similar categorization for phenomena such as stress and tone: whether they can be derived from the graphemes and context, or whether you need a database.

Hebrew's writing system is mostly divided between the first and last categories.

The majority are the easy kind: ג ד ח ט ל מ נ ס ע צ ק ר ת

These have only one pronunciation and can be transliterated automatically. Note that you will lose etymological information; specifically, some of the above can be doubled, which tells you something about the root, but no longer affects pronunciation.

The soft/hard letters: ב כ פ

For the most part, these have one pronunciation in forte position (start of a syllable or after a consonant) and another in lene position (end of a syllable or after a vowel).

However, they also vary based on lexical and syntactic content. Specifically, certain prepositions double the following sound, and certain conjugations double one of the sounds in the verbal root. In both cases, these sounds are pronounced in the hard variation instead of the soft one. You can't get around this without parsing.

The vowel/consonant alternators: ‎‎‎ו י

These letters can represent a vowel or a consonant. They are almost programmatic. Usually, they represent the vowel when between consonants or word-final, and the consonant at the start of a syllable or between vowels. In foreign names these are sometimes doubled to indicate the consonant. However, there are exceptions that require parsing.

However, וו is always the foreign sound /w/, to my knowledge.

The vowel presence indicators: ‎‎‎א ה

א can be silent or pronounced as a glottal stop depending on dialect, but either way, it can also indicate the presence of a vowel. This is usually if it occurs at the start or end of a word beside a consonant. However, there are exceptions that require parsing.

Similarly, ה is pronounced like English "h" but it can also be silent at the end of a word, in which case it indicates that there is a vowel at the end of the word. It would be programmatic based on this context except that it can occur syllable-finally in the middle of a word, usually due to pronunciation, and without parsing you can't tell whether this is silent or not.

Two sounds in one letter: ש

Without diacritics, there is no way to tell whether this is s or sh besides looking up the word.


If a single geresh occurs in the middle of a word, it represents a foreign phoneme.

If a single geresh occurs at the end of a word on a letter other than ג ד ז ח ס ע צ ר ת, it represents an initialism.

If it's at the end of a word on one of those letters, you need a lexicon.

Two together (gershayim) always represent an acronym (e.g. תנ״ך tanakh), but you can't tell whether this is read as a word (like "NASA") or as a series of letter names (like "NSA"). You can read about clues on the Wikipedia article on Hebrew abbreviations (but there are, of course, exceptions).

Five letters have a different word-final form in Hebrew: כ/ ך ; מ/ ם ; נ/ ן ; פ/ ף ; צ/ ץ. In theory, these are used in a way that allows you to distinguish some of the above cases, but in practice it's not done consistently.


Stress is mostly regular in Hebrew. It falls on the last syllable, except for certain suffixes. There are some words that take stress on the first syllable. These are mostly bisyllabic words with two of the same vowel, such as חרב khérev "sword". But this brings us to our next point.


In Hebrew, unlike in English, vowels need not be marked. They can be inferred, but there's lots of unavoidable ambiguity. If I write חרב you have no idea whether it's kherev, kharav, kherv, kharv, khrev, or khrav unless you have a dictionary.

Now, don't get me wrong: Modern Hebrew is more explicit than Biblical Hebrew was, and often uses the four vowel/consonant letters א ה ו י‎ more liberally to indicate where a vowel is. For example, imagine the name "David" (dah-veed) had never existed and Hebrew speakers now encountered it for the first time. They would not write it דוד as it was in Biblical Hebrew, because it looks like "Dood". They would prefer something like דויד.

But here's the kicker. Even with those helps, you can't tell exactly which vowel is meant. /u/ and /o/ are ambiguous. /i/ and /e/ are ambiguous. Schwas are ofen ambiguous; the only thing you know for certain is that there aren't two in a row. And because of these, many of the rules I've stated above can't even be followed programmatically because you can't identify the triggers.

Of course, anything is possible as long as you're willing to parse. But if I understand your question right, you're wondering if there's a way for your system to transliterate a text based only on orthographic and pholonogical knowledge, without recourse to lexical and syntactic properties. This is not possible in Modern Hebrew.

  • Recourse to syntactic properties is fine, just not semantic like knowing the meaning of the word. Ideally not having to know part of speech would be best, but if it's necessary then that's okay.
    – Lance
    Mar 17, 2020 at 15:31
  • @LancePollard One example of having to know part of speech would be the w + X form. Depending on how you parse the sentence, it could be "and [noun]" or it could be a verb in wayyiqtol (a literary past tense), which would determine the choice of vowels for the word and the hardness of the first letter for the hard/soft alternators.And yup, there is a semantic element to worry about: mainly, some tenses vary only by the (unwritten) vowels or by hard/softness and you might not know which tense to read except by interpreting the semantic context. So it would unfortunately be difficult. Mar 17, 2020 at 15:48
  • 2
    Under Yiddish influence, /v/ is frequently written וו, to distinguish from vowel ו (/o/ or /u/). When /w/ is borrowed, it is borrowed as וו, but many still say /v/ Mar 17, 2020 at 22:04
  • So are you saying if I have a dictionary (list) of words in Hebrew with the diacritics (Niqqud and such), then I can easily write a pronunciation guide (i.e. convert them to IPA) automatically for each of these words?
    – Lance
    Dec 6, 2020 at 22:36
  • 1
    @LancePollard Yup. (The niqqud system was created expressly to avoid ambiguity and allow systematic pronunciation of the written text.) It's in the wild, without niqqud and in short phrases, that it's unpredictable. Dec 7, 2020 at 1:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.