From 7ccd4a2b958f6075eba7a30eb6b2d16a69e8483a Mon Sep 17 00:00:00 2001 From: dualfroz Date: Sat, 3 Oct 2026 03:10:44 +0200 Subject: [PATCH] Keep a titlecase comparative before 'than' as an adjective --- .../preTagger/compute/tagger/2nd-pass/01-case.js | 4 ++++ tests/two/tagger/titlecase.test.js | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 tests/two/tagger/titlecase.test.js diff --git a/src/2-two/preTagger/compute/tagger/2nd-pass/01-case.js b/src/2-two/preTagger/compute/tagger/2nd-pass/01-case.js index 3cf5379..f5b849b 100644 --- a/src/2-two/preTagger/compute/tagger/2nd-pass/01-case.js +++ b/src/2-two/preTagger/compute/tagger/2nd-pass/01-case.js @@ -32,6 +32,10 @@ const checkCase = function (terms, i, model) { if (notProper.find(tag => term.tags.has(tag))) { return null } + // known comparative - 'is Higher than 16' + if (term.tags.has('Comparative') && terms[i + 1]?.normal === 'than') { + return null + } // A heading can start a new clause: 'Tutorial: Creating a cake'. if (i === 0 && term.tags.has('Gerund') && terms[i + 1]?.tags.has('Determiner')) { return null diff --git a/tests/two/tagger/titlecase.test.js b/tests/two/tagger/titlecase.test.js new file mode 100644 index 0000000..8cc1db3 --- /dev/null +++ b/tests/two/tagger/titlecase.test.js @@ -0,0 +1,16 @@ +import test from 'tape' +import nlp from '../_lib.js' +const here = '[two/titlecase] ' + +test('titlecase comparative before than', function (t) { + const arr = [ + ['when quantity is Higher than 16 do X', 'is #Comparative than'], + ['it is Bigger than that', 'is #Comparative than'], + ['prices were Cheaper than expected', 'were #Comparative than'], + ] + arr.forEach(a => { + t.equal(nlp(a[0]).has(a[1]), true, here + a[0]) + }) + t.equal(nlp('we met Young yesterday').has('#ProperNoun'), true, here + 'still a name') + t.end() +})