stride-align 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +201 -0
  3. data/NOTICE +255 -0
  4. data/README.md +107 -0
  5. data/data/bmpm_data/gen_approx_any.txt +131 -0
  6. data/data/bmpm_data/gen_approx_arabic.txt +26 -0
  7. data/data/bmpm_data/gen_approx_common.txt +233 -0
  8. data/data/bmpm_data/gen_approx_cyrillic.txt +18 -0
  9. data/data/bmpm_data/gen_approx_czech.txt +18 -0
  10. data/data/bmpm_data/gen_approx_dutch.txt +18 -0
  11. data/data/bmpm_data/gen_approx_english.txt +47 -0
  12. data/data/bmpm_data/gen_approx_french.txt +25 -0
  13. data/data/bmpm_data/gen_approx_german.txt +73 -0
  14. data/data/bmpm_data/gen_approx_greek.txt +18 -0
  15. data/data/bmpm_data/gen_approx_greeklatin.txt +20 -0
  16. data/data/bmpm_data/gen_approx_hebrew.txt +18 -0
  17. data/data/bmpm_data/gen_approx_hungarian.txt +18 -0
  18. data/data/bmpm_data/gen_approx_italian.txt +18 -0
  19. data/data/bmpm_data/gen_approx_polish.txt +84 -0
  20. data/data/bmpm_data/gen_approx_portuguese.txt +18 -0
  21. data/data/bmpm_data/gen_approx_romanian.txt +18 -0
  22. data/data/bmpm_data/gen_approx_russian.txt +48 -0
  23. data/data/bmpm_data/gen_approx_spanish.txt +21 -0
  24. data/data/bmpm_data/gen_approx_turkish.txt +18 -0
  25. data/data/bmpm_data/gen_exact_any.txt +40 -0
  26. data/data/bmpm_data/gen_exact_approx_common.txt +79 -0
  27. data/data/bmpm_data/gen_exact_arabic.txt +18 -0
  28. data/data/bmpm_data/gen_exact_common.txt +32 -0
  29. data/data/bmpm_data/gen_exact_cyrillic.txt +18 -0
  30. data/data/bmpm_data/gen_exact_czech.txt +18 -0
  31. data/data/bmpm_data/gen_exact_dutch.txt +18 -0
  32. data/data/bmpm_data/gen_exact_english.txt +18 -0
  33. data/data/bmpm_data/gen_exact_french.txt +18 -0
  34. data/data/bmpm_data/gen_exact_german.txt +18 -0
  35. data/data/bmpm_data/gen_exact_greek.txt +18 -0
  36. data/data/bmpm_data/gen_exact_greeklatin.txt +18 -0
  37. data/data/bmpm_data/gen_exact_hebrew.txt +18 -0
  38. data/data/bmpm_data/gen_exact_hungarian.txt +18 -0
  39. data/data/bmpm_data/gen_exact_italian.txt +18 -0
  40. data/data/bmpm_data/gen_exact_polish.txt +23 -0
  41. data/data/bmpm_data/gen_exact_portuguese.txt +18 -0
  42. data/data/bmpm_data/gen_exact_romanian.txt +18 -0
  43. data/data/bmpm_data/gen_exact_russian.txt +19 -0
  44. data/data/bmpm_data/gen_exact_spanish.txt +19 -0
  45. data/data/bmpm_data/gen_exact_turkish.txt +18 -0
  46. data/data/bmpm_data/gen_hebrew_common.txt +113 -0
  47. data/data/bmpm_data/gen_lang.txt +295 -0
  48. data/data/bmpm_data/gen_languages.txt +36 -0
  49. data/data/bmpm_data/gen_rules_any.txt +367 -0
  50. data/data/bmpm_data/gen_rules_arabic.txt +76 -0
  51. data/data/bmpm_data/gen_rules_cyrillic.txt +99 -0
  52. data/data/bmpm_data/gen_rules_czech.txt +67 -0
  53. data/data/bmpm_data/gen_rules_dutch.txt +78 -0
  54. data/data/bmpm_data/gen_rules_english.txt +113 -0
  55. data/data/bmpm_data/gen_rules_french.txt +114 -0
  56. data/data/bmpm_data/gen_rules_german.txt +129 -0
  57. data/data/bmpm_data/gen_rules_greek.txt +97 -0
  58. data/data/bmpm_data/gen_rules_greeklatin.txt +118 -0
  59. data/data/bmpm_data/gen_rules_hebrew.txt +62 -0
  60. data/data/bmpm_data/gen_rules_hungarian.txt +83 -0
  61. data/data/bmpm_data/gen_rules_italian.txt +77 -0
  62. data/data/bmpm_data/gen_rules_polish.txt +185 -0
  63. data/data/bmpm_data/gen_rules_portuguese.txt +105 -0
  64. data/data/bmpm_data/gen_rules_romanian.txt +64 -0
  65. data/data/bmpm_data/gen_rules_russian.txt +142 -0
  66. data/data/bmpm_data/gen_rules_spanish.txt +85 -0
  67. data/data/bmpm_data/gen_rules_turkish.txt +50 -0
  68. data/data/keyboard_data/qwerty.npy +0 -0
  69. data/data/matrix_data/BLOSUM100 +31 -0
  70. data/data/matrix_data/BLOSUM30 +31 -0
  71. data/data/matrix_data/BLOSUM35 +31 -0
  72. data/data/matrix_data/BLOSUM40 +31 -0
  73. data/data/matrix_data/BLOSUM45 +25 -0
  74. data/data/matrix_data/BLOSUM50 +25 -0
  75. data/data/matrix_data/BLOSUM55 +31 -0
  76. data/data/matrix_data/BLOSUM60 +31 -0
  77. data/data/matrix_data/BLOSUM62 +25 -0
  78. data/data/matrix_data/BLOSUM65 +31 -0
  79. data/data/matrix_data/BLOSUM70 +31 -0
  80. data/data/matrix_data/BLOSUM75 +31 -0
  81. data/data/matrix_data/BLOSUM80 +25 -0
  82. data/data/matrix_data/BLOSUM85 +31 -0
  83. data/data/matrix_data/BLOSUM90 +25 -0
  84. data/data/matrix_data/NUC.4.4 +25 -0
  85. data/data/matrix_data/PAM10 +34 -0
  86. data/data/matrix_data/PAM100 +34 -0
  87. data/data/matrix_data/PAM110 +34 -0
  88. data/data/matrix_data/PAM120 +34 -0
  89. data/data/matrix_data/PAM130 +34 -0
  90. data/data/matrix_data/PAM140 +34 -0
  91. data/data/matrix_data/PAM150 +34 -0
  92. data/data/matrix_data/PAM160 +34 -0
  93. data/data/matrix_data/PAM170 +34 -0
  94. data/data/matrix_data/PAM180 +34 -0
  95. data/data/matrix_data/PAM190 +34 -0
  96. data/data/matrix_data/PAM20 +34 -0
  97. data/data/matrix_data/PAM200 +34 -0
  98. data/data/matrix_data/PAM210 +34 -0
  99. data/data/matrix_data/PAM220 +34 -0
  100. data/data/matrix_data/PAM230 +34 -0
  101. data/data/matrix_data/PAM240 +34 -0
  102. data/data/matrix_data/PAM250 +25 -0
  103. data/data/matrix_data/PAM260 +34 -0
  104. data/data/matrix_data/PAM270 +34 -0
  105. data/data/matrix_data/PAM280 +34 -0
  106. data/data/matrix_data/PAM290 +34 -0
  107. data/data/matrix_data/PAM30 +25 -0
  108. data/data/matrix_data/PAM300 +34 -0
  109. data/data/matrix_data/PAM310 +34 -0
  110. data/data/matrix_data/PAM320 +34 -0
  111. data/data/matrix_data/PAM330 +34 -0
  112. data/data/matrix_data/PAM340 +34 -0
  113. data/data/matrix_data/PAM350 +34 -0
  114. data/data/matrix_data/PAM360 +34 -0
  115. data/data/matrix_data/PAM370 +34 -0
  116. data/data/matrix_data/PAM380 +34 -0
  117. data/data/matrix_data/PAM390 +34 -0
  118. data/data/matrix_data/PAM40 +34 -0
  119. data/data/matrix_data/PAM400 +34 -0
  120. data/data/matrix_data/PAM410 +34 -0
  121. data/data/matrix_data/PAM420 +34 -0
  122. data/data/matrix_data/PAM430 +34 -0
  123. data/data/matrix_data/PAM440 +34 -0
  124. data/data/matrix_data/PAM450 +34 -0
  125. data/data/matrix_data/PAM460 +34 -0
  126. data/data/matrix_data/PAM470 +34 -0
  127. data/data/matrix_data/PAM480 +34 -0
  128. data/data/matrix_data/PAM490 +34 -0
  129. data/data/matrix_data/PAM50 +34 -0
  130. data/data/matrix_data/PAM500 +34 -0
  131. data/data/matrix_data/PAM60 +34 -0
  132. data/data/matrix_data/PAM70 +25 -0
  133. data/data/matrix_data/PAM80 +34 -0
  134. data/data/matrix_data/PAM90 +34 -0
  135. data/ext/stride_align/backend_avx2.cpp +2 -0
  136. data/ext/stride_align/backend_avx512bwvl.cpp +2 -0
  137. data/ext/stride_align/backend_generic.cpp +3 -0
  138. data/ext/stride_align/backend_impl.hpp +983 -0
  139. data/ext/stride_align/backend_lasx.cpp +2 -0
  140. data/ext/stride_align/backend_lsx.cpp +2 -0
  141. data/ext/stride_align/backend_neon.cpp +2 -0
  142. data/ext/stride_align/backend_rvv.cpp +2 -0
  143. data/ext/stride_align/backend_sse41.cpp +2 -0
  144. data/ext/stride_align/backend_sve.cpp +2 -0
  145. data/ext/stride_align/backend_sve2.cpp +2 -0
  146. data/ext/stride_align/backend_vsx.cpp +2 -0
  147. data/ext/stride_align/beider_morse_impl.cpp +5 -0
  148. data/ext/stride_align/cpu_detect.cpp +172 -0
  149. data/ext/stride_align/cpu_detect.hpp +6 -0
  150. data/ext/stride_align/extconf.rb +114 -0
  151. data/ext/stride_align/target_profile.hpp +82 -0
  152. data/ext/stride_align/vendor/beider_morse_impl.cpp +1467 -0
  153. data/ext/stride_align/vendor/stride_align/alignment.hpp +199 -0
  154. data/ext/stride_align/vendor/stride_align/batch.hpp +812 -0
  155. data/ext/stride_align/vendor/stride_align/beider_morse.hpp +121 -0
  156. data/ext/stride_align/vendor/stride_align/caverphone.hpp +222 -0
  157. data/ext/stride_align/vendor/stride_align/cologne_phonetic.hpp +202 -0
  158. data/ext/stride_align/vendor/stride_align/core.hpp +731 -0
  159. data/ext/stride_align/vendor/stride_align/daitch_mokotoff.hpp +631 -0
  160. data/ext/stride_align/vendor/stride_align/double_metaphone.hpp +796 -0
  161. data/ext/stride_align/vendor/stride_align/dtw.hpp +300 -0
  162. data/ext/stride_align/vendor/stride_align/encoded.hpp +235 -0
  163. data/ext/stride_align/vendor/stride_align/hamming.hpp +55 -0
  164. data/ext/stride_align/vendor/stride_align/indel.hpp +1200 -0
  165. data/ext/stride_align/vendor/stride_align/jaro.hpp +517 -0
  166. data/ext/stride_align/vendor/stride_align/lcs.hpp +159 -0
  167. data/ext/stride_align/vendor/stride_align/levenshtein.hpp +1247 -0
  168. data/ext/stride_align/vendor/stride_align/levenshtein_prepared.hpp +193 -0
  169. data/ext/stride_align/vendor/stride_align/match_rating.hpp +168 -0
  170. data/ext/stride_align/vendor/stride_align/metaphone.hpp +291 -0
  171. data/ext/stride_align/vendor/stride_align/ngram.hpp +176 -0
  172. data/ext/stride_align/vendor/stride_align/nysiis.hpp +199 -0
  173. data/ext/stride_align/vendor/stride_align/pairwise_alignment.hpp +465 -0
  174. data/ext/stride_align/vendor/stride_align/partial_ratio.hpp +486 -0
  175. data/ext/stride_align/vendor/stride_align/ratcliff_obershelp.hpp +101 -0
  176. data/ext/stride_align/vendor/stride_align/soundex.hpp +108 -0
  177. data/ext/stride_align/vendor/stride_align/token_ratios.hpp +445 -0
  178. data/ext/stride_align/vendor/stride_align/types.hpp +16 -0
  179. data/ext/stride_align/vendor/stride_align/utf8.hpp +512 -0
  180. data/ext/stride_align/vendor/stride_align/wratio.hpp +363 -0
  181. data/lib/stride_align/algorithms.rb +296 -0
  182. data/lib/stride_align/alignment_path.rb +217 -0
  183. data/lib/stride_align/backend.rb +47 -0
  184. data/lib/stride_align/batch.rb +705 -0
  185. data/lib/stride_align/core.rb +180 -0
  186. data/lib/stride_align/keyboard.rb +200 -0
  187. data/lib/stride_align/matrices.rb +403 -0
  188. data/lib/stride_align/version.rb +5 -0
  189. data/lib/stride_align.rb +87 -0
  190. metadata +231 -0
@@ -0,0 +1,367 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one or more
3
+ * contributor license agreements. See the NOTICE file distributed with
4
+ * this work for additional information regarding copyright ownership.
5
+ * The ASF licenses this file to You under the Apache License, Version 2.0
6
+ * (the "License"); you may not use this file except in compliance with
7
+ * the License. You may obtain a copy of the License at
8
+ *
9
+ * https://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ // format of each entry rule in the table
19
+ // (pattern, left context, right context, phonetic)
20
+ // where
21
+ // pattern is a sequence of characters that might appear in the word to be transliterated
22
+ // left context is the context that precedes the pattern
23
+ // right context is the context that follows the pattern
24
+ // phonetic is the result that this rule generates
25
+ //
26
+ // note that both left context and right context can be regular expressions
27
+ // ex: left context of ^ would mean start of word
28
+ // left context of [aeiouy] means following a vowel
29
+ // right context of [^aeiouy] means preceding a consonant
30
+ // right context of e$ means preceding a final e
31
+
32
+ //GENERIC
33
+
34
+ // CONVERTING FEMININE TO MASCULINE
35
+ "yna" "" "$" "(in[russian]|ina)"
36
+ "ina" "" "$" "(in[russian]|ina)"
37
+ "liova" "" "$" "(lova|lof[russian]|lef[russian])"
38
+ "lova" "" "$" "(lova|lof[russian]|lef[russian]|l[czech]|el[czech])"
39
+ "kova" "" "$" "(kova|kof[russian]|k[czech]|ek[czech])"
40
+ "ova" "" "$" "(ova|of[russian]|[czech])"
41
+ "ová" "" "$" "(ova|[czech])"
42
+ "eva" "" "$" "(eva|ef[russian])"
43
+ "aia" "" "$" "(aja|i[russian])"
44
+ "aja" "" "$" "(aja|i[russian])"
45
+ "aya" "" "$" "(aja|i[russian])"
46
+
47
+ "lowa" "" "$" "(lova|lof[polish]|l[polish]|el[polish])"
48
+ "kowa" "" "$" "(kova|kof[polish]|k[polish]|ek[polish])"
49
+ "owa" "" "$" "(ova|of[polish]|)"
50
+ "lowna" "" "$" "(lovna|levna|l[polish]|el[polish])"
51
+ "kowna" "" "$" "(kovna|k[polish]|ek[polish])"
52
+ "owna" "" "$" "(ovna|[polish])"
53
+ "lówna" "" "$" "(l|el)" // polish
54
+ "kówna" "" "$" "(k|ek)" // polish
55
+ "ówna" "" "$" "" // polish
56
+ "á" "" "$" "(a|i[czech])"
57
+ "a" "" "$" "(a|i[polish+czech])"
58
+
59
+ // CONSONANTS
60
+ "pf" "" "" "(pf|p|f)"
61
+ "que" "" "$" "(k[french]|ke|kve)"
62
+ "qu" "" "" "(kv|k)"
63
+
64
+ "m" "" "[bfpv]" "(m|n)"
65
+ "m" "[aeiouy]" "[aeiouy]" "m"
66
+ "m" "[aeiouy]" "" "(m|n[french+portuguese])" // nasal
67
+
68
+ "ly" "" "[au]" "l"
69
+ "li" "" "[au]" "l"
70
+ "lio" "" "" "(lo|le[russian])"
71
+ "lyo" "" "" "(lo|le[russian])"
72
+ //array("ll" "" "" "(l|J[spanish])" // Disabled Argentinian rule
73
+ "lt" "u" "$" "(lt|[french])"
74
+
75
+ "v" "^" "" "(v|f[german]|b[spanish])"
76
+
77
+ "ex" "" "[aáuiíoóeéêy]" "(ez[portuguese]|eS[portuguese]|eks|egz)"
78
+ "ex" "" "[cs]" "(e[portuguese]|ek)"
79
+ "x" "u" "$" "(ks|[french])"
80
+
81
+ "ck" "" "" "(k|tsk[polish+czech])"
82
+ "cz" "" "" "(tS|tsz[czech])" // Polish
83
+
84
+ //Processing of "h" in various combinations
85
+ "rh" "^" "" "r"
86
+ "dh" "^" "" "d"
87
+ "bh" "^" "" "b"
88
+
89
+ "ph" "" "" "(ph|f)"
90
+ "kh" "" "" "(x[russian+english]|kh)"
91
+
92
+ "lh" "" "" "(lh|l[portuguese])"
93
+ "nh" "" "" "(nh|nj[portuguese])"
94
+
95
+ "ssch" "" "" "S" // german
96
+ "chsch" "" "" "xS" // german
97
+ "tsch" "" "" "tS" // german
98
+
99
+ ///"desch" "^" "" "deS"
100
+ ///"desh" "^" "" "(dES|de[french])"
101
+ ///"des" "^" "[^aeiouy]" "(dEs|de[french])"
102
+
103
+ "sch" "[aeiouy]" "[ei]" "(S|StS[russian]|sk[romanian+italian])"
104
+ "sch" "[aeiouy]" "" "(S|StS[russian])"
105
+ "sch" "" "[ei]" "(sk[romanian+italian]|S|StS[russian])"
106
+ "sch" "" "" "(S|StS[russian])"
107
+ "ssh" "" "" "S"
108
+
109
+ "sh" "" "[äöü]" "sh" // german
110
+ "sh" "" "[aeiou]" "(S[russian+english]|sh)"
111
+ "sh" "" "" "S"
112
+
113
+ "zh" "" "" "(Z[english+russian]|zh|tsh[german])"
114
+
115
+ "chs" "" "" "(ks[german]|xs|tSs[russian+english])"
116
+ "ch" "" "[ei]" "(x|tS[spanish+english+russian]|k[romanian+italian]|S[portuguese+french])"
117
+ "ch" "" "" "(x|tS[spanish+english+russian]|S[portuguese+french])"
118
+
119
+ "th" "^" "" "t" // english+german+greeklatin
120
+ "th" "" "[äöüaeiou]" "(t[english+german+greeklatin]|th)"
121
+ "th" "" "" "t" // english+german+greeklatin
122
+
123
+ "gh" "" "[ei]" "(g[romanian+italian+greeklatin]|gh)"
124
+
125
+ "ouh" "" "[aioe]" "(v[french]|uh)"
126
+ "uh" "" "[aioe]" "(v|uh)"
127
+ "h" "." "$" "" // match h at the end of words, but not as a single letter: difference to the original version
128
+ "h" "[aeiouyäöü]" "" "" // german
129
+ "h" "^" "" "(h|x[romanian+greeklatin]|H[english+romanian+polish+french+portuguese+italian+spanish])"
130
+
131
+ //Processing of "ci" "ce" & "cy"
132
+ "cia" "" "" "(tSa[polish]|tsa)" // Polish
133
+ "cią" "" "[bp]" "(tSom|tsom)" // Polish
134
+ "cią" "" "" "(tSon[polish]|tson)" // Polish
135
+ "cię" "" "[bp]" "(tSem[polish]|tsem)" // Polish
136
+ "cię" "" "" "(tSen[polish]|tsen)" // Polish
137
+ "cie" "" "" "(tSe[polish]|tse)" // Polish
138
+ "cio" "" "" "(tSo[polish]|tso)" // Polish
139
+ "ciu" "" "" "(tSu[polish]|tsu)" // Polish
140
+
141
+ "sci" "" "$" "(Si[italian]|stsi[polish+czech]|dZi[turkish]|tSi[polish+romanian]|tS[romanian]|si)"
142
+ "sc" "" "[ei]" "(S[italian]|sts[polish+czech]|dZ[turkish]|tS[polish+romanian]|s)"
143
+ "ci" "" "$" "(tsi[polish+czech]|dZi[turkish]|tSi[polish+romanian]|tS[romanian]|si)"
144
+ "cy" "" "" "(si|tsi[polish])"
145
+ "c" "" "[ei]" "(ts[polish+czech]|dZ[turkish]|tS[polish+romanian]|k[greeklatin]|s)"
146
+
147
+ //Processing of "s"
148
+ "sç" "" "[aeiou]" "(s|stS[turkish])"
149
+ "ssz" "" "" "S" // polish
150
+ "sz" "^" "" "(S|s[hungarian])" // polish
151
+ "sz" "" "$" "(S|s[hungarian])" // polish
152
+ "sz" "" "" "(S|s[hungarian]|sts[german])" // polish
153
+ "ssp" "" "" "(Sp[german]|sp)"
154
+ "sp" "" "" "(Sp[german]|sp)"
155
+ "sst" "" "" "(St[german]|st)"
156
+ "st" "" "" "(St[german]|st)"
157
+ "ss" "" "" "s"
158
+ "sj" "^" "" "S" // dutch
159
+ "sj" "" "$" "S" // dutch
160
+ "sj" "" "" "(sj|S[dutch]|sx[spanish]|sZ[romanian+turkish])"
161
+
162
+ "sia" "" "" "(Sa[polish]|sa[polish]|sja)"
163
+ "sią" "" "[bp]" "(Som[polish]|som)" // polish
164
+ "sią" "" "" "(Son[polish]|son)" // polish
165
+ "się" "" "[bp]" "(Sem[polish]|sem)" // polish
166
+ "się" "" "" "(Sen[polish]|sen)" // polish
167
+ "sie" "" "" "(se|sje|Se[polish]|zi[german])"
168
+
169
+ "sio" "" "" "(So[polish]|so)"
170
+ "siu" "" "" "(Su[polish]|sju)"
171
+
172
+ "si" "[äöëaáuiíoóeéêy]" "" "(Si[polish]|si|zi[portuguese+french+italian+german])"
173
+ "si" "" "" "(Si[polish]|si|zi[german])"
174
+ "s" "[aáuiíoóeéêy]" "[aáuíoóeéêy]" "(s|z[portuguese+french+italian+german])"
175
+ "s" "" "[aeouäöë]" "(s|z[german])"
176
+ "s" "[aeiouy]" "[dglmnrv]" "(s|z|Z[portuguese]|[french])" // Groslot
177
+ "s" "" "[dglmnrv]" "(s|z|Z[portuguese])"
178
+
179
+ //Processing of "g"
180
+ "gue" "" "$" "(k[french]|gve)" // portuguese+spanish
181
+ "gu" "" "[ei]" "(g[french]|gv[portuguese+spanish])" // portuguese+spanish
182
+ "gu" "" "[ao]" "gv" // portuguese+spanish
183
+ "guy" "" "" "gi" // french
184
+
185
+ "gli" "" "" "(glI|l[italian])"
186
+ "gni" "" "" "(gnI|ni[italian+french])"
187
+ "gn" "" "[aeou]" "(n[italian+french]|nj[italian+french]|gn)"
188
+
189
+ "ggie" "" "" "(je[greeklatin]|dZe)" // dZ is Italian
190
+ "ggi" "" "[aou]" "(j[greeklatin]|dZ)" // dZ is Italian
191
+
192
+ "ggi" "[yaeiou]" "[aou]" "(gI|dZ[italian]|j[greeklatin])"
193
+ "gge" "[yaeiou]" "" "(gE|xe[spanish]|gZe[portuguese+french]|dZe[english+romanian+italian+spanish]|je[greeklatin])"
194
+ "ggi" "[yaeiou]" "" "(gI|xi[spanish]|gZi[portuguese+french]|dZi[english+romanian+italian+spanish]|i[greeklatin])"
195
+ "ggi" "" "[aou]" "(gI|dZ[italian]|j[greeklatin])"
196
+
197
+ "gie" "" "$" "(ge|gi[german]|ji[french]|dZe[italian])"
198
+ "gie" "" "" "(ge|gi[german]|dZe[italian]|je[greeklatin])"
199
+ "gi" "" "[aou]" "(i[greeklatin]|dZ)" // dZ is Italian
200
+
201
+ "ge" "[yaeiou]" "" "(gE|xe[spanish]|Ze[portuguese+french]|dZe[english+romanian+italian+spanish])"
202
+ "gi" "[yaeiou]" "" "(gI|xi[spanish]|Zi[portuguese+french]|dZi[english+romanian+italian+spanish])"
203
+ "ge" "" "" "(gE|xe[spanish]|hE[russian]|je[greeklatin]|Ze[portuguese+french]|dZe[english+romanian+italian+spanish])"
204
+ "gi" "" "" "(gI|xi[spanish]|hI[russian]|i[greeklatin]|Zi[portuguese+french]|dZi[english+romanian+italian+spanish])"
205
+ "gy" "" "[aeouáéóúüöőű]" "(gi|dj[hungarian])"
206
+ "gy" "" "" "(gi|d[hungarian])"
207
+ "g" "[yaeiou]" "[aouyei]" "g"
208
+ "g" "" "[aouei]" "(g|h[russian])"
209
+
210
+ //Processing of "j"
211
+ "ij" "" "" "(i|ej[dutch]|ix[spanish]|iZ[french+romanian+turkish+portuguese])"
212
+ "j" "" "[aoeiuy]" "(j|dZ[english]|x[spanish]|Z[french+romanian+turkish+portuguese])"
213
+
214
+ //Processing of "z"
215
+ "rz" "t" "" "(S[polish]|r)" // polish
216
+ "rz" "" "" "(rz|rts[german]|Z[polish]|r[polish]|rZ[polish])"
217
+
218
+ "tz" "" "$" "(ts|tS[english+german])"
219
+ "tz" "^" "" "(ts[english+german+russian]|tS[english+german])"
220
+ "tz" "" "" "(ts[english+german+russian]|tz)"
221
+
222
+ "zia" "" "[bcdgkpstwzż]" "(Za[polish]|za[polish]|zja)"
223
+ "zia" "" "" "(Za[polish]|zja)"
224
+ "zią" "" "[bp]" "(Zom[polish]|zom)" // polish
225
+ "zią" "" "" "(Zon[polish]|zon)" // polish
226
+ "zię" "" "[bp]" "(Zem[polish]|zem)" // polish
227
+ "zię" "" "" "(Zen[polish]|zen)" // polish
228
+ "zie" "" "[bcdgkpstwzż]" "(Ze[polish]|ze[polish]|ze|tsi[german])"
229
+ "zie" "" "" "(ze|Ze[polish]|tsi[german])"
230
+ "zio" "" "" "(Zo[polish]|zo)"
231
+ "ziu" "" "" "(Zu[polish]|zju)"
232
+ "zi" "" "" "(Zi[polish]|zi|tsi[german]|dzi[italian]|tsi[italian]|si[spanish])"
233
+
234
+ "z" "" "$" "(s|ts[german]|ts[italian]|S[portuguese])" // ts It, s/S/Z Port, s in Sp, z Fr
235
+ "z" "" "[bdgv]" "(z|dz[italian]|Z[portuguese])" // dz It, Z/z Port, z Sp & Fr
236
+ "z" "" "[ptckf]" "(s|ts[italian]|S[portuguese])" // ts It, s/S/z Port, z/s Sp
237
+
238
+ // VOWELS
239
+ "aue" "" "" "aue"
240
+ "oue" "" "" "(oue|ve[french])"
241
+ "eau" "" "" "o" // French
242
+
243
+ "ae" "" "" "(Y[german]|aje[russian]|ae)"
244
+ "ai" "" "" "aj"
245
+ "au" "" "" "(au|o[french])"
246
+ "ay" "" "" "aj"
247
+ "ão" "" "" "(au|an)" // Port
248
+ "ãe" "" "" "(aj|an)" // Port
249
+ "ãi" "" "" "(aj|an)" // Port
250
+ "ea" "" "" "(ea|ja[romanian])"
251
+ "ee" "" "" "(i[english]|aje[russian]|e)"
252
+ "ei" "" "" "(aj|ej)"
253
+ "eu" "" "" "(eu|Yj[german]|ej[german]|oj[german]|Y[dutch])"
254
+ "ey" "" "" "(aj|ej)"
255
+ "ia" "" "" "ja"
256
+ "ie" "" "" "(i[german]|e[polish]|ije[russian]|Q[dutch]|je)"
257
+ "ii" "" "$" "i" // russian
258
+ "io" "" "" "(jo|e[russian])"
259
+ "iu" "" "" "ju"
260
+ "iy" "" "$" "i" // russian
261
+ "oe" "" "" "(Y[german]|oje[russian]|u[dutch]|oe)"
262
+ "oi" "" "" "oj"
263
+ "oo" "" "" "(u[english]|o)"
264
+ "ou" "" "" "(ou|u[french+greeklatin]|au[dutch])"
265
+ "où" "" "" "u" // french
266
+ "oy" "" "" "oj"
267
+ "õe" "" "" "(oj|on)" // Port
268
+ "ua" "" "" "va"
269
+ "ue" "" "" "(Q[german]|uje[russian]|ve)"
270
+ "ui" "" "" "(uj|vi|Y[dutch])"
271
+ "uu" "" "" "(u|Q[dutch])"
272
+ "uo" "" "" "(vo|o)"
273
+ "uy" "" "" "uj"
274
+ "ya" "" "" "ja"
275
+ "ye" "" "" "(je|ije[russian])"
276
+ "yi" "^" "" "i"
277
+ "yi" "" "$" "i" // russian
278
+ "yo" "" "" "(jo|e[russian])"
279
+ "yu" "" "" "ju"
280
+ "yy" "" "$" "i" // russian
281
+
282
+ "i" "[áóéê]" "" "j"
283
+ "y" "[áóéê]" "" "j"
284
+
285
+ "e" "^" "" "(e|je[russian])"
286
+ "e" "" "$" "(e|EE[english+french])"
287
+
288
+ // LANGUAGE SPECIFIC CHARACTERS
289
+ "ą" "" "[bp]" "om" // polish
290
+ "ą" "" "" "on" // polish
291
+ "ä" "" "" "(Y|e)"
292
+ "á" "" "" "a" // Port & Sp
293
+ "à" "" "" "a"
294
+ "â" "" "" "a"
295
+ "ã" "" "" "(a|an)" // Port
296
+ "ă" "" "" "(e[romanian]|a)" // romanian
297
+ "č" "" "" "tS" // czech
298
+ "ć" "" "" "(tS[polish]|ts)" // polish
299
+ "ç" "" "" "(s|tS[turkish])"
300
+ "ď" "" "" "(d|dj[czech])"
301
+ "ę" "" "[bp]" "em" // polish
302
+ "ę" "" "" "en" // polish
303
+ "é" "" "" "e"
304
+ "è" "" "" "e"
305
+ "ê" "" "" "e"
306
+ "ě" "" "" "(e|je[czech])"
307
+ "ğ" "" "" "" // turkish
308
+ "í" "" "" "i"
309
+ "î" "" "" "i"
310
+ "ı" "" "" "(i|e[turkish]|[turkish])"
311
+ "ł" "" "" "l"
312
+ "ń" "" "" "(n|nj[polish])" // polish
313
+ "ñ" "" "" "(n|nj[spanish])"
314
+ "ó" "" "" "(u[polish]|o)"
315
+ "ô" "" "" "o" // Port & Fr
316
+ "õ" "" "" "(o|on[portuguese]|Y[hungarian])"
317
+ "ò" "" "" "o" // Sp & It
318
+ "ö" "" "" "Y"
319
+ "ř" "" "" "(r|rZ[czech])"
320
+ "ś" "" "" "(S[polish]|s)"
321
+ "ş" "" "" "S" // romanian+turkish
322
+ "š" "" "" "S" // czech
323
+ "ţ" "" "" "ts" // romanian
324
+ "ť" "" "" "(t|tj[czech])"
325
+ "ű" "" "" "Q" // hungarian
326
+ "ü" "" "" "(Q|u[portuguese+spanish])"
327
+ "ú" "" "" "u"
328
+ "ů" "" "" "u" // czech
329
+ "ù" "" "" "u" // french
330
+ "ý" "" "" "i" // czech
331
+ "ż" "" "" "Z" // polish
332
+ "ź" "" "" "(Z[polish]|z)"
333
+
334
+ "ß" "" "" "s" // german
335
+ "'" "" "" "" // russian
336
+ "\"" "" "" "" // russian
337
+
338
+ "o" "" "[bcćdgklłmnńrsśtwzźż]" "(O|P[polish])"
339
+
340
+ // LATIN ALPHABET
341
+ "a" "" "" "A"
342
+ "b" "" "" "B"
343
+ "c" "" "" "(k|ts[polish+czech]|dZ[turkish])"
344
+ "d" "" "" "d"
345
+ "e" "" "" "E"
346
+ "f" "" "" "f"
347
+ //array("g" "" "" "(g|x[dutch])" // Dutch sound disabled
348
+ "g" "" "" "g"
349
+ "h" "" "" "(h|x[romanian]|H[french+portuguese+italian+spanish])"
350
+ "i" "" "" "I"
351
+ "j" "" "" "(j|x[spanish]|Z[french+romanian+turkish+portuguese])"
352
+ "k" "" "" "k"
353
+ "l" "" "" "l"
354
+ "m" "" "" "m"
355
+ "n" "" "" "n"
356
+ "o" "" "" "O"
357
+ "p" "" "" "p"
358
+ "q" "" "" "k"
359
+ "r" "" "" "r"
360
+ "s" "" "" "(s|S[portuguese])"
361
+ "t" "" "" "t"
362
+ "u" "" "" "U"
363
+ "v" "" "" "V"
364
+ "w" "" "" "(v|w[english+dutch])"
365
+ "x" "" "" "(ks|gz|S[portuguese+spanish])" // S/ks Port & Sp, gz Sp, It only ks
366
+ "y" "" "" "i"
367
+ "z" "" "" "(z|ts[german]|dz[italian]|ts[italian]|s[spanish])" // ts/dz It, z Port & Fr, z/s Sp
@@ -0,0 +1,76 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one or more
3
+ * contributor license agreements. See the NOTICE file distributed with
4
+ * this work for additional information regarding copyright ownership.
5
+ * The ASF licenses this file to You under the Apache License, Version 2.0
6
+ * (the "License"); you may not use this file except in compliance with
7
+ * the License. You may obtain a copy of the License at
8
+ *
9
+ * https://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ // General
19
+ "ا" "" "" "a" // alif isol & init
20
+ "ب" "" "$" "b"
21
+ "ب" "" "" "b1" // ba' isol
22
+ "ت" "" "$" "t"
23
+ "ت" "" "" "t1" // ta' isol
24
+ "ث" "" "$" "t"
25
+ "ث" "" "" "t1" // tha' isol
26
+ "ج" "" "$" "(dZ|Z)"
27
+ "ج" "" "" "(dZ1|Z1)" // jim isol
28
+ "ح" "^" "" "1"
29
+ "ح" "" "$" "1"
30
+ "ح" "" "" "(h1|1)" // h.a' isol
31
+ "خ" "" "$" "x"
32
+ "خ" "" "" "x1" // kha' isol
33
+ "د" "" "$" "d"
34
+ "د" "" "" "d1" // dal isol & init
35
+ "ذ" "" "$" "d"
36
+ "ذ" "" "" "d1" // dhal isol & init
37
+ "ر" "" "$" "r"
38
+ "ر" "" "" "r1" // ra' isol & init
39
+ "ز" "" "$" "z"
40
+ "ز" "" "" "z1" // za' isol & init
41
+ "س" "" "$" "s"
42
+ "س" "" "" "s1" // sin isol
43
+ "ش" "" "$" "S"
44
+ "ش" "" "" "S1" // shin isol
45
+ "ص" "" "$" "s"
46
+ "ص" "" "" "s1" // s.ad isol
47
+ "ض" "" "$" "d"
48
+ "ض" "" "" "d1" // d.ad isol
49
+ "ط" "" "$" "t"
50
+ "ط" "" "" "t1" // t.a' isol
51
+ "ظ" "" "$" "z"
52
+ "ظ" "" "" "z1" // z.a' isol
53
+ "ع" "^" "" "1"
54
+ "ع" "" "$" "1"
55
+ "ع" "" "" "(h1|1)" // ayin isol
56
+ "غ" "" "$" "g"
57
+ "غ" "" "" "g1" // ghayin isol
58
+ "ف" "" "$" "f"
59
+ "ف" "" "" "f1" // fa' isol
60
+ "ق" "" "$" "k"
61
+ "ق" "" "" "k1" // qaf isol
62
+ "ك" "" "$" "k"
63
+ "ك" "" "" "k1" // kaf isol
64
+ "ل" "" "$" "l"
65
+ "ل" "" "" "l1" // lam isol
66
+ "م" "" "$" "m"
67
+ "م" "" "" "m1" // mim isol
68
+ "ن" "" "$" "n"
69
+ "ن" "" "" "n1" // nun isol
70
+ "ه" "^" "" "1"
71
+ "ه" "" "$" "1"
72
+ "ه" "" "" "(h1|1)" // h isol
73
+ "و" "" "$" "(u|v)"
74
+ "و" "" "" "(u|v1)" // waw, isol + init
75
+ "ي‎" "" "$" "(i|j)"
76
+ "ي‎" "" "" "(i|j1)" // ya' isol
@@ -0,0 +1,99 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one or more
3
+ * contributor license agreements. See the NOTICE file distributed with
4
+ * this work for additional information regarding copyright ownership.
5
+ * The ASF licenses this file to You under the Apache License, Version 2.0
6
+ * (the "License"); you may not use this file except in compliance with
7
+ * the License. You may obtain a copy of the License at
8
+ *
9
+ * https://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ // GENERAL
19
+ "ця" "" "" "tsa"
20
+ "цю" "" "" "tsu"
21
+ "циа" "" "" "tsa"
22
+ "цие" "" "" "tse"
23
+ "цио" "" "" "tso"
24
+ "циу" "" "" "tsu"
25
+ "сие" "" "" "se"
26
+ "сио" "" "" "so"
27
+ "зие" "" "" "ze"
28
+ "зио" "" "" "zo"
29
+ "с" "" "с" ""
30
+
31
+ "гауз" "" "$" "haus"
32
+ "гаус" "" "$" "haus"
33
+ "гольц" "" "$" "holts"
34
+ "геймер" "" "$" "(hejmer|hajmer)"
35
+ "гейм" "" "$" "(hejm|hajm)"
36
+ "гоф" "" "$" "hof"
37
+ "гер" "" "$" "ger"
38
+ "ген" "" "$" "gen"
39
+ "гин" "" "$" "gin"
40
+ "г" "(й|ё|я|ю|ы|а|е|о|и|у)" "(а|е|о|и|у)" "g"
41
+ "г" "" "(а|е|о|и|у)" "(g|h)"
42
+
43
+ "ля" "" "" "la"
44
+ "лю" "" "" "lu"
45
+ "лё" "" "" "(le|lo)"
46
+ "лио" "" "" "(le|lo)"
47
+ "ле" "" "" "(lE|lo)"
48
+
49
+ "ийе" "" "" "je"
50
+ "ие" "" "" "je"
51
+ "ыйе" "" "" "je"
52
+ "ые" "" "" "je"
53
+ "ий" "" "(а|о|у)" "j"
54
+ "ый" "" "(а|о|у)" "j"
55
+ "ий" "" "$" "i"
56
+ "ый" "" "$" "i"
57
+
58
+ "ей" "^" "" "(jej|ej)"
59
+ "е" "(а|е|о|у)" "" "je"
60
+ "е" "^" "" "je"
61
+ "эй" "" "" "ej"
62
+ "ей" "" "" "ej"
63
+
64
+ "ауе" "" "" "aue"
65
+ "ауэ" "" "" "aue"
66
+
67
+ "а" "" "" "a"
68
+ "б" "" "" "b"
69
+ "в" "" "" "v"
70
+ "г" "" "" "g"
71
+ "д" "" "" "d"
72
+ "е" "" "" "E"
73
+ "ё" "" "" "(e|jo)"
74
+ "ж" "" "" "Z"
75
+ "з" "" "" "z"
76
+ "и" "" "" "I"
77
+ "й" "" "" "j"
78
+ "к" "" "" "k"
79
+ "л" "" "" "l"
80
+ "м" "" "" "m"
81
+ "н" "" "" "n"
82
+ "о" "" "" "o"
83
+ "п" "" "" "p"
84
+ "р" "" "" "r"
85
+ "с" "" "" "s"
86
+ "т" "" "" "t"
87
+ "у" "" "" "u"
88
+ "ф" "" "" "f"
89
+ "х" "" "" "x"
90
+ "ц" "" "" "ts"
91
+ "ч" "" "" "tS"
92
+ "ш" "" "" "S"
93
+ "щ" "" "" "StS"
94
+ "ъ" "" "" ""
95
+ "ы" "" "" "I"
96
+ "ь" "" "" ""
97
+ "э" "" "" "E"
98
+ "ю" "" "" "ju"
99
+ "я" "" "" "ja"
@@ -0,0 +1,67 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one or more
3
+ * contributor license agreements. See the NOTICE file distributed with
4
+ * this work for additional information regarding copyright ownership.
5
+ * The ASF licenses this file to You under the Apache License, Version 2.0
6
+ * (the "License"); you may not use this file except in compliance with
7
+ * the License. You may obtain a copy of the License at
8
+ *
9
+ * https://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ "ch" "" "" "x"
19
+ "qu" "" "" "(k|kv)"
20
+ "aue" "" "" "aue"
21
+ "ei" "" "" "(ej|aj)"
22
+ "i" "[aou]" "" "j"
23
+ "i" "" "[aeou]" "j"
24
+
25
+ "č" "" "" "tS"
26
+ "š" "" "" "S"
27
+ "ň" "" "" "n"
28
+ "ť" "" "" "(t|tj)"
29
+ "ď" "" "" "(d|dj)"
30
+ "ř" "" "" "(r|rZ)"
31
+
32
+ "á" "" "" "a"
33
+ "é" "" "" "e"
34
+ "í" "" "" "i"
35
+ "ó" "" "" "o"
36
+ "ú" "" "" "u"
37
+ "ý" "" "" "i"
38
+ "ě" "" "" "(e|je)"
39
+ "ů" "" "" "u"
40
+
41
+ // LATIN ALPHABET
42
+ "a" "" "" "a"
43
+ "b" "" "" "b"
44
+ "c" "" "" "ts"
45
+ "d" "" "" "d"
46
+ "e" "" "" "E"
47
+ "f" "" "" "f"
48
+ "g" "" "" "g"
49
+ "h" "" "" "(h|g)"
50
+ "i" "" "" "I"
51
+ "j" "" "" "j"
52
+ "k" "" "" "k"
53
+ "l" "" "" "l"
54
+ "m" "" "" "m"
55
+ "n" "" "" "n"
56
+ "o" "" "" "o"
57
+ "p" "" "" "p"
58
+ "q" "" "" "(k|kv)"
59
+ "r" "" "" "r"
60
+ "s" "" "" "s"
61
+ "t" "" "" "t"
62
+ "u" "" "" "u"
63
+ "v" "" "" "v"
64
+ "w" "" "" "v"
65
+ "x" "" "" "ks"
66
+ "y" "" "" "i"
67
+ "z" "" "" "z"