)]}'
{
  "log": [
    {
      "commit": "21fcd5f746b400213f56035a2a424ea2feff9f31",
      "tree": "6ae8016583eaa565276b0a912e7ea6c01831e73c",
      "parents": [
        "565274ef29a94438e63dffac72ac74c24a534c40"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Sep 06 13:17:29 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Sep 06 13:17:29 2026 +0200"
      },
      "message": "Show the predictive score before the sigmoid\n\nmax(a) is sigmoid(z), and sigmoid is monotone, so it ranks the collocates\nthe way the raw score z does - but only in principle. It is read out of\nexpTable, whose index is (z + MAX_EXP) * (EXP_TABLE_SIZE / MAX_EXP / 2),\ninteger arithmetic that comes to 83: z is bucketed at 1/83 and everything\nfrom MAX_EXP up lands in one value, 0.99741. Of the 1000 rows for\n\"König - Mann + Frau\" only 264 have a distinct max(a), up to fifteen share\none, and Gemahlin, römisch-deutsche, ungekrönte and Co-Fürsten sit\ntogether on the cap.\n\nz was computed for every candidate at every window position and dropped at\nthat lookup, which is what the unused max_f and maxmax_f in\ngetCollocators once tracked. It is carried through now, per position in\ncollocator.raw and as the maximum over positions in collocator.max_raw,\nand shown next to max(a) as max(z).\n\nNothing else changes: the threshold, the ordering inside a position\u0027s list\nand the auto focus all still work on the activation. The column renders\nthree decimals but sorts on the unrounded value.\n\nThe info page entry says that the arithmetic covers the paradigmatic and\nthe predictive syntagmatic analysis, and about the latter that it used to\nconsider only the first word form and has gained the max(z) column. The\nsaturation change needs no notice of its own: of ten frequent single words\nthe highest max(z) is 5.981, so none reaches the cap of 6 and only\nexpressions get past it.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: If26bd78b36e247a4250b63059114470c473fb6c5\n"
    },
    {
      "commit": "565274ef29a94438e63dffac72ac74c24a534c40",
      "tree": "bab44688a0ecfbc487dc94cf7e3f85d65604e5fa",
      "parents": [
        "5b8aaf7556e4c5f677d51601c3f1c15e90557516"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Sep 06 13:17:17 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Sep 06 13:17:17 2026 +0200"
      },
      "message": "Search the embedding space with vector expressions\n\n\"König - Mann + Frau\" now looks for the neighbours of\nvec(König) - vec(Mann) + vec(Frau) instead of the neighbours of a single\nword. A \u0027+\u0027 or \u0027-\u0027 is an operator only at the beginning of a token, so\nhyphenated words like \"Nord-Süd-Dialog\" stay searchable, and blank\nseparated words keep entering the query with a \u0027+\u0027, as before.\n\n_get_neighbours() already had the branch for it, but nothing ever filled\nwl-\u003esep: the wordlist came from malloc() and the signs were read out of\nuninitialised memory, so a multi word query subtracted operands at\nrandom. It is filled now, and its indexing corrected - sep[b] is the sign\nof operand b, not sep[b-1].\n\nThe predictive collocators answer for the whole query as well.\ngetCollocators() read the input weights of wl-\u003ewordi[0], the first\noperand, and nothing said so: \"Haus Auto\" answered with the collocators\nof Haus, \"Auto Haus\" with those of Auto. The score of a candidate is\nsigmoid(q . syn1neg[collocate, position]), linear in q before the\nsigmoid, so q can be the signed combination the paradigmatic side\nsearches around rather than the vector of one word.\n\nThe terms are averaged rather than summed. The sigmoid is informative\nover a narrow range only - the strongest collocates of a single word\nreach 0.994 to 0.997 on dereko-2026-ii, against the 0.9975 that MAX_EXP\nallows - so a plain sum would push them into saturation. Dividing by the\nnumber of terms keeps every query in the range MIN_RESP and the auto\nfocus are calibrated for, and leaves one word exactly as it was, divisor\none. A balanced analogy is one term as well, +1 -1 +1.\n\nThose tails now saturate instead of being dropped. Activations outside\n±MAX_EXP used to skip the collocate entirely, removing the strongest ones\nfrom the list and from the position and target sums.\n\nThe count based collocators cannot follow: they are looked up per node in\nthe co-occurrence database. They used to be fetched for the first\nparadigmatic neighbour, i.e. for the word nearest to the query vector,\nwhich for an expression is not what was asked for. The interface says so\nin place of that table now, and get_neighbours() reports the number of\noperands so it can tell the two cases apart.\n\nOperands outside the vocabulary are named above the result instead of\nbeing dropped in silence. The vocabulary lookup only recognised a miss at\nthe very end of the vocabulary, so in a merged model a missing word\nresolved to whatever sits at the boundary between the two vocabularies;\nit returns -1 in both halves now.\n\nTwo more things the tokeniser uncovered. The best array was sized for\n10 * max(N, 200) entries but sorted over N * para_threads, which fits\nonly as long as the syntagmatic threads take half of them - it is sized\nfor num_threads slices now. And its unfilled slots kept wordi \u003d\u003d 0 from\nthe memset, which the result loop emitted as vocab[-1 * max_w] once a\nthread found fewer candidates than were asked for; slots start at -1 and\nthe loop stops there.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Ia91727eb669d73fc055adf652500464b8a743795\n"
    },
    {
      "commit": "5b8aaf7556e4c5f677d51601c3f1c15e90557516",
      "tree": "5f0af7ab733f9d250efe610938078a4bda8d6ea3",
      "parents": [
        "f5abdcd3a5ad1e1ca9361fa1989d2f7cc9430c57"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Sep 04 19:21:22 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Sep 04 19:21:22 2026 +0200"
      },
      "message": "Info tab: show the changes, age out old downtimes, link GitHub\n\nThree things in the info tab.\n\nThe note about the changed scores sat inside the downtime list, where\nnobody could read it: insertCalendarEvents() calls replaceChildren() on\nthat list and fills it from the iCal feed, so any static content there is\nonly a placeholder until the calendar loads. It is now a section of its\nown, above the downtimes, and the thanks to Tim Feldmüller is dropped\nfrom it again - he belongs in the Readme and the changelog, not in a\nnotice to users.\n\nDowntimes older than a week are no longer listed. The maxAgeDays\nparameter of insertCalendarEvents() defaulted to 100, which kept\nmaintenance windows from months ago on the page.\n\nThe dd elements of that list had no indent of their own and fell back to\nthe browser default of 40px, which is inside the 21ex that the floated dt\noccupies, so their text wrapped around the float instead of starting\nafter it.\n\nThe source code links point to the published GitHub repositories now,\nand collocatordb is listed alongside dereko2vec. derekovecs itself has no\nGitHub repository yet, so its link still goes to gitiles.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I178cad2586db0ef07f6e76671c3c35e050b1bf60\n"
    },
    {
      "commit": "92507656d27d6413f59c0d784a117f907ec2d7eb",
      "tree": "96b74854526fb9f3e90992b22d279d2b0fa1e5ea",
      "parents": [
        "67ea2ad2b0313bb80c6a8d57061fb1ed68e2bbdb"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Sep 04 17:59:18 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Sep 04 17:59:18 2026 +0200"
      },
      "message": "Correct the log-likelihood scaling and fix the German announcement\n\ncollocatordb 1.8.0 scales the log-likelihood contingency table with the\nwindow size as a whole rather than in its row total alone, so LL values\nchange here too. MI, MI², MI³ and nPMI do not, as they only need the\nexpected co-occurrence frequency, which is the same either way. Thanks\nto Tim Feldmüller for spotting the inconsistency.\n\nThe German announcement still described LDaf as Log-Dice of the auto\nfocus window, and thus as at most as high as LD. That was true only for\nthe intermediate state that has since been reverted; the English text\nhad been corrected, the German one had not, because the replacement that\nwas supposed to update it silently matched nothing. Both are now\nrewritten from the same wording.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I42174ac2500f8e1bc3e54739310736526a1d5d47\n"
    },
    {
      "commit": "1e00eb8162313000137aad16fb6cda794ea567e2",
      "tree": "855bb8610c01906b0f7d96f672d78f0d9adb9c74",
      "parents": [
        "ffd6d2a20ef47c67fe15e5494121f88f516d67ab"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Sep 04 16:38:30 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Sep 04 16:38:30 2026 +0200"
      },
      "message": "Document the corrected Log-Dice, the effective window and the auto focus\n\nThree things were left unexplained, and one of them has changed:\n\nLD is now computed as Rychly (2008) defines it, without the window size\nfactor that used to be applied to f1, so its values are higher than\nbefore, by up to log2 of the window size, and comparable to those of\nother tools. This is announced in the info tab.\n\nLDaf is unchanged, as is the resulting order of the collocates, but it is\neasily mistaken for Log-Dice of the auto focus window. It is the auto\nfocus score itself, whose denominator grows with the width of the\nselection, which is what makes it sensitive to how concentrated a pair\nis, and thus what makes it order collocates usefully enough to serve as\nthe default order. It is therefore not on the scale of LD and can be\nhigher or lower than it.\n\nLL, MI, MI², MI³ and nPMI are computed over the positions in which the\ncollocate actually occurs, not over the whole context window. Calling\nthese the attested positions, and their number the effective window size,\nkeeps them apart from the auto focus, which is Belica\u0027s term for the not\nnecessarily contiguous selection of positions that yields the highest\nscore. Both are visible in the auto-focus column, which marks the\nattested positions with a hollow and the selected ones with a filled\nsquare.\n\nExplained in the info tab in both languages, in the tooltips of the LDaf\nand auto-focus columns, and the LDaf tooltip now gives the formula.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Id6293c71438d4b42d3a461697c181e3b6a072a83\n"
    },
    {
      "commit": "014220ce5507e2518daee5fc567bbe8a367c4da1",
      "tree": "d40483ae929c0627a9378a9a38fc1eae2a7adec9",
      "parents": [
        "41964fbb85491d7daf9f3fc871d7386d6ec74d21"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Aug 28 15:33:43 2024 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Aug 28 16:12:32 2024 +0200"
      },
      "message": "Add missing reference in about\n\nChange-Id: Ic41c855a590a59791b3aeb3e5fe3f7c4bddfb5c3\n"
    },
    {
      "commit": "d68f5c3f1d37bb6b5ad578ed61f2fc30cd886d0c",
      "tree": "44426efdd69a8c7411cd627cc30036eb4105860f",
      "parents": [
        "2bb85b2704e91aa8374fe9c84535f212397b912e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Aug 23 11:50:32 2024 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Aug 23 11:50:32 2024 +0200"
      },
      "message": "Use KorAP as example for production level offer\n\nChange-Id: Ibac0c0b2f7107addfdd3cc1d1836f25545cb35d6\n"
    },
    {
      "commit": "fa7628f1b63274585c0cfa80d01b4bde54f21cc1",
      "tree": "224f220707f6da81acb5bf3a59367d1a3131fd91",
      "parents": [
        "49c5cf097debb6f7ce7c730ba5af2cba51be5a68"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Aug 23 11:40:27 2024 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Aug 23 11:40:27 2024 +0200"
      },
      "message": "Add DeReKo and CoRoLa references\n\nChange-Id: I15ea77d1ca795f136960f15a1508ecf2fa391aec\n"
    },
    {
      "commit": "b37bd84fef2e5f0a6786144a7d36ee8c0cd3b580",
      "tree": "08a72327b0487e269ba1f191565462eede38ba41",
      "parents": [
        "dd8cfbeffdd66a5e8651ecc2bb79ef5c5c8007ca"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Apr 05 11:22:30 2024 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Apr 05 11:22:30 2024 +0200"
      },
      "message": "Add missing reference to latest derekovecs publication\n\nChange-Id: Ic729a6b01f92324c33ca778cff5a7a191b75beca\n"
    },
    {
      "commit": "4df553397d18576e86953a4b86659e85288b9168",
      "tree": "fda0e0688c62b358382c5b23c6d393b6c8d1eb33",
      "parents": [
        "18d7835dbed95ba42ec7308f6b5e77705d5c37dd"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Apr 05 09:55:56 2024 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Apr 05 09:58:42 2024 +0200"
      },
      "message": "Keep announcements for 100 days by default\n\nChange-Id: Idce630beb3220c46a9b1f16cd8d7cba758f6b18e\n"
    },
    {
      "commit": "eacc63f81aa0781d5e1c3143b86182c3b930dc11",
      "tree": "96054625985c3f6fe612c67d34fca1d6f6adbfd0",
      "parents": [
        "2c84b5dddbe6e8d9b7c09a7ab5a81cb46eec75e0"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Nov 06 15:39:13 2023 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Nov 06 15:39:13 2023 +0100"
      },
      "message": "Show version information in footer\n\nChange-Id: Ib976168f8bdea14a092436f4e17441e8533405b1\n"
    },
    {
      "commit": "9ae184ce2b3ad55d7465add6fdf030b56e64acd6",
      "tree": "fb7a263f080097d06fd180150a760dac85f00fa2",
      "parents": [
        "ac4640204014bfe5684a24260127935408ad99bf"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Nov 04 18:21:54 2023 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Nov 04 18:23:03 2023 +0100"
      },
      "message": "Insert scheduled downtime infos from cloud calendar\n\nChange-Id: I8e4524126c08c4b89298e29b4c17588ef3997b71\n"
    },
    {
      "commit": "bb0f3fc3886063dab1b5439f51e84c2cbcf259a9",
      "tree": "87f81bf28c09bcc163c10df64e0e90d2f76c4da2",
      "parents": [
        "ce6490b46c460212353d3df90b5fb659efab9771"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Dec 06 15:26:06 2019 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Dec 06 15:26:06 2019 +0100"
      },
      "message": "derekovecs: fix CII link\n"
    },
    {
      "commit": "d6dfdf080f576d170092530aabc1afa6f5927c85",
      "tree": "1d78f0ebd3aabbe36dae25419433eb34a90b0b4c",
      "parents": [
        "6d7462c4903e4b44086c83eaf273dba8f6e2cebf"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Dec 06 09:53:34 2019 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Dec 06 09:53:34 2019 +0100"
      },
      "message": "derekovecs: replace former footer with about tab including references\n"
    }
  ]
}
