-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
312 lines (284 loc) · 12.6 KB
/
index.html
File metadata and controls
312 lines (284 loc) · 12.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="robots" content="noindex">
<meta name="viewport" content="user-scalable=no,width=device-width,initial-scale=1">
<title>MIS*L</title>
<link rel="stylesheet" href="css/style.css" type="text/css" />
<link rel="icon" href="img/misol.png" type="image/png">
<script src="js/misol.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="css/misol.css" />
</div>
</head>
<body>
<h1 class="main">Modeling and Inferring Sound Laws</h1>
<h1 class="smart">MISOL</h1>
<div class="dropdown">
<div class="menu-icon">
<div></div>
<div></div>
<div></div>
</div>
<div class="dropdown-content">
<label for="tabreiter-0-0">Home</label>
<label for="tabreiter-0-1">Classes and Laws</label>
<label for="tabreiter-0-2">Forward</label>
<label for="tabreiter-0-3">Backward</label>
<label for="tabreiter-0-4">Import and Export</label>
<label for="tabreiter-0-5">Help</label>
</div>
</div>
<h2></h2>
<div id="content" class="tabreiter">
<ul>
<li class="reiter">
<input type="radio" name="tabreiter-0" checked="checked" id="tabreiter-0-0" />
<label class="main" for="tabreiter-0-0">Home</label>
<div>
<div class="tabbed">
<h3>Modeling and Inducing Sound Laws: Overview</h3>
This web application allows you to define your own sound laws and apply them to your proto-forms in order to simulate regular sound change from an ancestral language to a descendant language.
<br>
<img src="img/misol.png" style="width:200px;display:float;" />
<br>
<b>How to cite:</b><br>
<div style="background-color:aliceblue;padding:5px;border-radius:5px;border:1px dotted gray;">List, Johann-Mattis (2024): <i>MISoL: Modeling and Inducing Sound Laws with an Interactive Web-Application [Software Tool: Version 0.2]. </i>Passau: Chair of Multilingual Computational Linguistics at the University of Passau. <a href="https://misol.edictor.org">https://misol.edictor.org</a>.</div>
</div>
<div class="footer"></div>
</div>
</li>
<li class="reiter">
<input type="radio" name="tabreiter-0" id="tabreiter-0-1" />
<label class="main" for="tabreiter-0-1">Classes and Laws</label>
<div>
<div class="tabbed">
<h3>Sound Classes and Sound Laws</h3>
<div style="display: flex">
<textarea class="inputtext" cols="40" rows="10" id="sound_classes" placeholder="#insert your data here
P = p pʰ b
K = k kʰ g
T = t tʰ d
C1 = p t k
C2 = pʰ tʰ kʰ
C3 = b d g
TONE = ⁵⁵ ³⁵ ²¹⁴ ⁵¹
V = a e i o u
"></textarea>
<textarea class="inputtext" cols="40" rows="10" id="sound_laws" placeholder="#insert your laws here
C3 > C2 / @tone[²¹⁴]_
C3 > C1 / @tone[⁵⁵ ⁵¹ ³⁵]_
C2 > C2
C3 > C3
"></textarea>
</div>
<button class="mybutton" onclick="loaddata()">LOAD DATA</button>
<button class="mybutton" onclick="loadsampledata()">LOAD SAMPLE DATA I</button>
<button class="mybutton" onclick="loadsampledata2()">LOAD SAMPLE DATA II</button>
<button style="display:none" id="settingstoggler" class="mybutton" onclick="togglesettings();">SHOW CLASSES AND LAWS</button>
<div id="settings" style="display: none;">
<div class="baseframe" id="sound_classes_out"></div>
<div class="baseframe" id="sound_laws_out"></div>
</div>
</div>
<div class="footer"></div>
</div>
</li>
<li class="reiter">
<input type="radio" name="tabreiter-0" id="tabreiter-0-2" />
<label class="main" for="tabreiter-0-2">Forward Reconstruction</label>
<div>
<div class="tabbed">
<h3>Forward Reconstruction</h3>
<table class="optiontable"><tr>
<th>Reconstruction Mode:</th>
<td><select class="selector" name="mode" id="reconstruction-mode">
<option value="strict">strict</option>
<option value="ordered" selected=true>ordered</option>
</select></td>
</tr>
<tr>
<th>Missing Sound Laws:</th>
<td>
<select class="selector" name="handling" id="reconstruction-handling">
<option value="mark">mark</option>
<option value="ignore" selected=true>ignore</option>
</select>
</td>
</tr>
<tr>
<!--<th>Order of Sound Laws:</th>
<td>
<select class="selector" name="handling" id="reconstruction-order">
<option value="unordered" selected=true>unordered</option>
<option value="chronological">chronological</option>
</select>
</td>-->
</tr>
</table>
<div style="display: flex">
<textarea class="inputtext" cols="60" rows="5" id="sequences" placeholder="# insert your sequence, separated by a blank line
p a
⁵⁵ ⁵⁵
d u
²¹⁴ ²¹⁴
"></textarea>
<textarea class="inputtext" cols="30" rows="5" id="tiers" placeholder="# insert your tiers here
# one per line
# defaults to 'segments'
segments
tone
"></textarea>
</div>
<button class="mybutton" onclick="reconstruct()">APPLY SOUND LAWS</button>
<button style="display:none" id="lawidxtoggler" class="mybutton" onclick="togglelawidxs();">SHOW LAW IDS</button>
<input type="text" placeholder="filter source" onkeyup="filter_data(this, 'reconstructions_out', 0)" style="width:150px;padding:5px;margin:5px;border: 3px solid lightgray;" />
<input type="text" placeholder="filter target" onkeyup="filter_data(this, 'reconstructions_out', 1)" style="width:150px;padding:5px;margin:5px;border: 3px solid lightgray;" />
<div id="reconstructions" style="display: none">
<div>
<div class="baseframe" id="reconstructions_out"></div>
</div>
</div>
</div>
<div class="footer"></div>
</div>
</li>
<li class="reiter">
<input type="radio" name="tabreiter-0" id="tabreiter-0-3" />
<label class="main" for="tabreiter-0-3">Backward Reconstruction</label>
<div>
<div class="tabbed">
<h3>Backward Reconstruction</h3>
<table class="optiontable"><tr>
<th>Reconstruction Mode:</th>
<td><select class="selector" name="mode" id="reconstruction-mode-bw">
<option value="strict">strict</option>
<option value="ordered" selected=true>ordered</option>
</select></td>
</tr>
<tr>
<th>Missing Sound Laws:</th>
<td>
<select class="selector" name="handling" id="reconstruction-handling-bw">
<option value="mark">mark</option>
<option value="ignore" selected=true>ignore</option>
</select>
</td>
</tr>
<tr>
<!--<th>Order of Sound Laws:</th>
<td>
<select class="selector" name="handling" id="reconstruction-order">
<option value="unordered" selected=true>unordered</option>
<option value="chronological">chronological</option>
</select>
</td>-->
</tr>
</table>
<div style="display: flex">
<textarea class="inputtext" cols="40" rows="5" id="sequencesbw" placeholder="# insert your sequence, separated by a blank line
p a
d u
"></textarea>
<textarea class="inputtext" cols="20" rows="5" id="tiersbw" placeholder="# insert your tier functions here, one per line
tone
"></textarea>
</div>
<button class="mybutton" onclick="backwards()">FIND PROTO-FORMS</button>
<button class="mybutton" onclick="toggle_bwr(this)">SHOW IMPERFECT</button>
<div id="reconstructions-bw" style="display: none">
<div class="baseframe" id="reconstructions_bw_out"></div>
</div>
</div>
<div class="footer"></div>
</div>
</li>
<li class="reiter">
<input type="radio" name="tabreiter-0" id="tabreiter-0-4" />
<label class="main" for="tabreiter-0-4">Import and Export</label>
<div>
<div class="tabbed">
<h3>Import and Export of Sound Laws</h3>
While you can conveniently copy and paste your sound laws in the respective text fields, we also allow you to store your data in the form of a text file with dedicated sections.
<h4>Export Your Data</h4>
<label for="datasetid">DATASET ID</label> <input id="datasetid" type="text" style="width:300px" />
<button class="mybutton" onclick="export_data()">EXPORT DATA</button>
<a href="" class="mybutton" id="download">DOWNLOAD</a>
<h4>Import Your Data</h4>
<input type="file" accept="text/plain" onchange="read_file(event)" />
<button class="mybutton" style="background-color:lighgray;color:darkblue;display:none;" id="fileloaded" ></button>
</div>
<div class="footer"></div>
</div>
</li>
<li class="reiter">
<input type="radio" name="tabreiter-0" id="tabreiter-0-5" />
<label class="main" for="tabreiter-0-5">Help</label>
<div>
<div class="tabbed">
<h3>Help</h3>
<iframe src="spec.html" style="min-height:98vh;border: 0px solid white;width:100%;"></iframe>
<!--<script type="text/javascript">
function resizeIframe(iframe) {
iframe.height = iframe.contentWindow.document.body.scrollHeight + "px";
window.requestAnimationFrame(() => resizeIframe(iframe));
}
</script>-->
<!--<h4>Sound Classes and Sound Laws</h4>
We define sound classes for all sounds in our sample, to account for
the common groupings used by linguists to mark sounds that share
certain properties (similar to distinctive features, but more
flexible). See the code examples on how features are defined. Note that
individual sounds and all individual segments (e.g., also the equation
mark) need to be segmented by a space to be recognized by the program.
<br> We define sound laws in the typical fashion used in historical
linguistics, with the exception that we use a strict space separation
to define sounds. In addition, we allow to address suprasegmental
aspects of a sequence, which need to be defined by providing another
tier that marks the respective suprasgemental aspect for each segment
in your data by the construct <font style="font-family: monospace,monospace;">@TIER[VALUE]</font> which precedes a sound class
or a sound. With this construct, you can also mark the source sound which
is supposed to be modified directly, as shown in our example. <br> Note
that the dot is reserved as a specific symbol that indicates that two
sounds were merged to mark an evolving unit. As a result, sound class
names should not contain any dots. They can contain an underscore, but they cannot contain a whitespace.
<h4>Forward Reconstruction</h4>
<p>
Reconstruction here uses unordered or anachronical sound laws which are applied
to each segment of a sequence without taking into account that the
application of a sound law might result in the modification of the
sequence itself. Anachronical sound laws are a very powerful analytical
step that helps to identify chronological sound laws properly. While
you can provide direct suprasegmental information by adding
multi-tiered sequences, we provide some basic functions by which these
tiers can be computed. If you want to make use of these functions that
take a sequence as input and ield a tier as output that is passed to
the algorithm, your tier-name needs to be identical with the function
and preceded by an @ symbol, such as, e.g., @tone.
</p>
<h4>Backward Reconstruction</h4>
<p>
Our backwards reconstruction starts from a target word in the language
and then goes upwards to identify the sequences in the proto-language
that could have accounted for this string. This requires some
adjustments regarding your sound laws, since it is difficult to predict
elements which have disappared, so you should adjust the laws in such a
way that you avoid sound laws involving a loss of an element but
instead model these as the modification of two elements in the
ancestral language that become one element in the target language. Once
this is accounted for, you can safely apply our procedure, which first
identifies all possible source sounds, then takes the cartesian product
to create all possible words from these sound combinations, and finally
evaluates all of the word against the sound changes to see if these are
possible.
</p>-->
</div>
<div class="footer"></div>
</div>
</li>
</ul>
</div>
<script src="js/action.js"></script>
<script src="js/integrate.js"></script>
</body>
</html>