Show the predictive score before the sigmoid
max(a) is sigmoid(z), and sigmoid is monotone, so it ranks the collocates
the way the raw score z does - but only in principle. It is read out of
expTable, whose index is (z + MAX_EXP) * (EXP_TABLE_SIZE / MAX_EXP / 2),
integer arithmetic that comes to 83: z is bucketed at 1/83 and everything
from MAX_EXP up lands in one value, 0.99741. Of the 1000 rows for
"König - Mann + Frau" only 264 have a distinct max(a), up to fifteen share
one, and Gemahlin, römisch-deutsche, ungekrönte and Co-Fürsten sit
together on the cap.
z was computed for every candidate at every window position and dropped at
that lookup, which is what the unused max_f and maxmax_f in
getCollocators once tracked. It is carried through now, per position in
collocator.raw and as the maximum over positions in collocator.max_raw,
and shown next to max(a) as max(z).
Nothing else changes: the threshold, the ordering inside a position's list
and the auto focus all still work on the activation. The column renders
three decimals but sorts on the unrounded value.
The info page entry says that the arithmetic covers the paradigmatic and
the predictive syntagmatic analysis, and about the latter that it used to
consider only the first word form and has gained the max(z) column. The
saturation change needs no notice of its own: of ten frequent single words
the highest max(z) is 5.981, so none reaches the cap of 6 and only
expressions get past it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: If26bd78b36e247a4250b63059114470c473fb6c5
diff --git a/templates/de/about.html.ep b/templates/de/about.html.ep
index e58acd2..02de3f6 100644
--- a/templates/de/about.html.ep
+++ b/templates/de/about.html.ep
@@ -72,7 +72,9 @@
<p>
<strong>06.09.2026</strong>
- Das Suchfeld versteht jetzt Vektorarithmetik, siehe <em>Suchanfragen</em> oben.
+ Das Suchfeld versteht jetzt Vektorarithmetik (siehe <em>Suchanfragen</em> oben) für
+ paradigmatische und prädiktiv-syntagmatische Analysen; letztere berücksichtigten
+ bisher nur die erste Wortform und wurden außerdem um die Spalte max(z) erweitert.
</p>
<p>
<strong>04.09.2026</strong>
diff --git a/templates/en/about.html.ep b/templates/en/about.html.ep
index 039c427..8ebdbdc 100644
--- a/templates/en/about.html.ep
+++ b/templates/en/about.html.ep
@@ -69,7 +69,9 @@
<p>
<strong>2026-09-06</strong>
- The search field understands vector arithmetic, see <em>Queries</em> above.
+ The search field understands vector arithmetic (see <em>Queries</em> above) for
+ paradigmatic and predictive syntagmatic analyses; the latter used to consider only
+ the first word form, and have also gained a max(z) column.
</p>
<p>
<strong>2026-09-04</strong>
diff --git a/templates/index.html.ep b/templates/index.html.ep
index ce38536..ba2dde5 100644
--- a/templates/index.html.ep
+++ b/templates/index.html.ep
@@ -251,6 +251,8 @@
{ "data": "rank", type: "allnumeric" },
{ "data": "pos", width: "7%", sClass: "dt-center mono compact", render: function ( data, type, row ) {return bitvec2window(data, row.heat, row.word) }},
{ "data": "max", render: function ( data, type, row ) {return data.toFixed(3) }},
+ %# Display rounding only; the sort needs the unrounded value.
+ { "data": "dot", render: function ( data, type, row ) {return type === 'display' ? data.toFixed(3) : data } },
{ "data": "average", render: function ( data, type, row ) {return data.toFixed(3) }},
{ "data": "prob", type: "scientific", render: function ( data, type, row ) {return data.toExponential(3) } },
{ "data": "cprob", type: "scientific", render: function ( data, type, row ) {return data.toExponential(3) } },
@@ -259,21 +261,21 @@
{ "data": "rank", type: "allnumeric" }
],
"columnDefs": [
- { className: "dt-right", "targets": [0,2,3,4,5,6] },
+ { className: "dt-right", "targets": [0,2,3,4,5,6,7] },
{ className: "dt-center", "targets": [ 1] },
{ "searchable": false,
"orderable": false,
- "targets": [0, 8]
+ "targets": [0, 9]
},
{ "type": "scientific", targets: [2,3,4,5,6] },
- { "orderSequence": [ "desc" ], "targets": [ 2, 3, 4, 5, 6 ] },
- { "orderSequence": [ "asc", "desc" ], "targets": [ 1, 7 ] },
- { "targets": [8], "visible": false }
+ { "orderSequence": [ "desc" ], "targets": [ 2, 3, 4, 5, 6, 7 ] },
+ { "orderSequence": [ "asc", "desc" ], "targets": [ 1, 8 ] },
+ { "targets": [9], "visible": false }
],
"oLanguage": {
"sSearch": "Filter: "
},
- "order": [[ 4, 'desc' ]],
+ "order": [[ 5, 'desc' ]],
} );
$.ajaxSetup({
type: 'POST',
@@ -934,6 +936,7 @@
<th>#</th>
<th align="center" title="Activation of the respective collocator in the columns around the target normalized by its maximum (red). Columns selected by the auto-focus funtion (which window of all possible column-combinations maximizes ⊥(a/c)?) are marked with +. Click on the column postions to lauch a KorAP query with target word and collocator in the respective position.">w'</th>
<th align="right" title="Maximum activation of the collocator anywhere in the output layer.">max(a)</th>
+ <th align="right" title="Maximum activation of the collocator before the sigmoid: max(a) = σ(max(z)). Unquantized and uncapped, and therefore able to order collocators of equal max(a).">max(z)</th>
<th title="Average raw activation of the collocator in the columns selected by auto-focus." align="right">⟨a⟩</th>
<th title="Sum of activations over the selected colunns normalized by the total activation sum of the selected columns." align="right">Σa/Σw'</th>
<th title="Co-norm of the column-normalized activations over the colunns selected by the auto-focus." align="right">⊥(a/c)</th>