/**
 * Wikilink lexicon — static word-list data for wikilink matching and
 * implicit-entity detection. Split out of wikilinks.ts (arch-review S11).
 *
 * Data-only module: no logic lives here.
 *
 * NOTE: B1-LOC-exempt — this file is a lexicon (static word lists);
 * its line count is expected to be large.
 */

/**
 * Base set of common words to exclude from wikilink matching.
 * Extended by IMPLICIT_EXCLUDE_WORDS to form the full EXCLUDE_WORDS set.
 */
export const EXCLUDE_WORDS_BASE = new Set([
  // Day names
  'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday',
  // Month names
  'january', 'february', 'march', 'april', 'may', 'june', 'july', 'august',
  'september', 'october', 'november', 'december',
  // Temporal words
  'today', 'tomorrow', 'yesterday', 'week', 'month', 'year',
  // Periodic review compounds
  'month end', 'month start', 'year end', 'year start',
  'quarter end', 'quarter start', 'quarterly review',
  'weekly review', 'monthly review', 'annual review',
  'christmas', 'holiday', 'break',

  // --- Two-char common words (pronouns, prepositions, conjunctions) ---
  'me', 'us', 'we', 'he', 'it', 'am', 'is', 'be', 'do', 'go',
  'no', 'so', 'up', 'if', 'or', 'as', 'at', 'by', 'on', 'in', 'to',
  'of', 'an', 'my', 'oh', 'ok',

  // --- Pronouns (personal, possessive, reflexive, relative, demonstrative) ---
  'she', 'her', 'him', 'his', 'they', 'them', 'their', 'its', 'our', 'ours',
  'who', 'whom', 'whose', 'what', 'which', 'mine', 'yours', 'hers', 'theirs',
  'myself', 'yourself', 'himself', 'herself', 'itself', 'ourselves', 'themselves',

  // --- Stop words & determiners ---
  'the', 'and', 'for', 'with', 'from', 'this', 'that', 'these', 'those',
  'some', 'any', 'each', 'both', 'few', 'many', 'most', 'such',

  // --- Prepositions ---
  'about', 'above', 'across', 'after', 'against', 'along', 'among', 'around',
  'before', 'behind', 'below', 'beneath', 'beside', 'between', 'beyond',
  'despite', 'down', 'during', 'except', 'inside', 'into', 'near',
  'off', 'onto', 'outside', 'over', 'past', 'since', 'through',
  'toward', 'towards', 'under', 'underneath', 'until', 'upon', 'within', 'without',

  // --- Conjunctions ---
  'although', 'because', 'however', 'therefore', 'moreover', 'furthermore',
  'nevertheless', 'otherwise', 'meanwhile', 'whereas', 'whenever', 'wherever',
  'whether', 'while', 'unless', 'though', 'hence',

  // --- Common adverbs ---
  'again', 'already', 'always', 'almost', 'also', 'away',
  'back', 'certainly', 'clearly', 'completely', 'currently',
  'directly', 'effectively', 'enough', 'especially', 'essentially',
  'eventually', 'ever', 'exactly', 'fairly', 'finally', 'frequently',
  'fully', 'generally', 'gradually', 'greatly', 'hardly', 'here',
  'highly', 'immediately', 'indeed', 'instead',
  'just', 'largely', 'later', 'likely', 'mainly', 'maybe',
  'merely', 'mostly', 'naturally', 'nearly', 'necessarily',
  'never', 'normally', 'now', 'obviously', 'occasionally', 'often',
  'only', 'originally', 'particularly', 'perhaps',
  'personally', 'possibly', 'potentially', 'practically', 'precisely',
  'presumably', 'previously', 'primarily', 'probably', 'properly',
  'quickly', 'quite', 'rarely', 'rather', 'readily', 'really',
  'recently', 'relatively', 'roughly', 'significantly', 'simply',
  'slightly', 'slowly', 'sometimes', 'somewhat', 'soon', 'specifically',
  'still', 'strongly', 'subsequently', 'successfully', 'suddenly',
  'surely', 'then', 'there', 'thoroughly', 'together',
  'too', 'truly', 'typically', 'ultimately', 'unfortunately', 'usually',
  'very', 'well', 'widely', 'yet',

  // --- Common adjectives ---
  'able', 'actual', 'additional', 'alternative', 'appropriate', 'available',
  'basic', 'broad', 'certain', 'clear', 'close', 'common', 'complete',
  'comprehensive', 'considerable', 'consistent', 'correct', 'critical',
  'current', 'deep', 'different', 'difficult', 'direct', 'due', 'early',
  'effective', 'entire', 'essential', 'exact', 'excellent', 'existing',
  'extensive', 'extra', 'fair', 'familiar', 'final', 'fine', 'first',
  'fixed', 'flat', 'formal', 'former', 'free', 'fresh', 'full', 'further',
  'future', 'general', 'given', 'global', 'good', 'great', 'hard', 'heavy',
  'high', 'huge', 'ideal', 'important', 'independent', 'individual',
  'initial', 'internal', 'key', 'large', 'last', 'late', 'latest', 'least',
  'less', 'light', 'limited', 'little', 'local', 'long', 'loose', 'low',
  'main', 'major', 'massive', 'minor', 'missing', 'modern', 'much',
  'narrow', 'native', 'natural', 'necessary', 'negative', 'new', 'nice',
  'normal', 'obvious', 'old', 'only', 'open', 'original', 'overall', 'own',
  'particular', 'perfect', 'personal', 'plain', 'poor', 'popular',
  'positive', 'possible', 'potential', 'powerful', 'practical', 'present',
  'previous', 'primary', 'prime', 'private', 'proper', 'public', 'pure',
  'quick', 'quiet', 'random', 'rapid', 'rare', 'raw', 'ready', 'real',
  'reasonable', 'recent', 'regular', 'related', 'relevant', 'remote',
  'required', 'responsible', 'rich', 'right', 'rough', 'round', 'safe',
  'secure', 'separate', 'serious', 'sharp', 'short', 'significant',
  'silent', 'similar', 'simple', 'single', 'slight', 'slow', 'small',
  'smart', 'smooth', 'soft', 'solid', 'special', 'specific', 'stable',
  'standard', 'steep', 'straight', 'strict', 'strong', 'sudden',
  'sufficient', 'suitable', 'sure', 'sweet', 'tall', 'thick', 'thin',
  'tight', 'tiny', 'total', 'tough', 'true', 'typical', 'unique',
  'unusual', 'useful', 'usual', 'valid', 'valuable', 'various', 'vast',
  'warm', 'weak', 'whole', 'wide', 'wild', 'worth', 'wrong',

  // --- Common verbs ---
  'accept', 'achieve', 'add', 'admit', 'agree', 'allow', 'announce', 'appear',
  'apply', 'approach', 'argue', 'arrange', 'arrive', 'assume', 'attempt', 'avoid',
  'begin', 'believe', 'belong', 'break', 'bring', 'build', 'burn', 'buy',
  'call', 'carry', 'catch', 'cause', 'change', 'charge', 'check', 'choose',
  'claim', 'clean', 'climb', 'close', 'collect', 'come', 'commit',
  'compare', 'complain', 'confirm', 'connect', 'consider', 'contain',
  'continue', 'contribute', 'control', 'convert', 'cook', 'copy', 'correct',
  'cost', 'count', 'cover', 'create', 'cross', 'cry', 'cut',
  'deal', 'decide', 'declare', 'define', 'deliver', 'demand', 'deny', 'depend',
  'describe', 'design', 'destroy', 'determine', 'develop', 'die', 'discover',
  'discuss', 'divide', 'double', 'doubt', 'draw', 'dress', 'drink', 'drive',
  'drop', 'earn', 'eat', 'enable', 'encourage', 'enjoy', 'ensure', 'enter',
  'establish', 'examine', 'exist', 'expand', 'expect', 'experience',
  'explain', 'express', 'extend', 'face', 'fail', 'fall', 'feed', 'feel',
  'fight', 'fill', 'find', 'finish', 'fit', 'fix', 'fly', 'focus', 'force',
  'forget', 'form', 'gain', 'gather', 'generate', 'get', 'give', 'go', 'grab',
  'grant', 'grow', 'guess', 'handle', 'happen', 'hate', 'head', 'hear',
  'help', 'hide', 'hit', 'hold', 'hope', 'hurt', 'identify', 'ignore',
  'imagine', 'improve', 'include', 'increase', 'indicate', 'influence',
  'inform', 'insist', 'install', 'intend', 'introduce', 'invest', 'invite',
  'involve', 'issue', 'join', 'judge', 'jump', 'justify', 'keep', 'kick',
  'kill', 'knock', 'land', 'last', 'laugh', 'launch', 'lay', 'lead', 'learn',
  'leave', 'lend', 'let', 'lie', 'lift', 'limit', 'link', 'listen', 'live',
  'look', 'lose', 'love', 'maintain', 'make', 'manage', 'mark', 'match',
  'matter', 'mean', 'measure', 'meet', 'mention', 'mind', 'miss', 'mix',
  'monitor', 'move', 'need', 'note', 'notice', 'obtain', 'occur', 'offer',
  'open', 'operate', 'order', 'organise', 'organize', 'own',
  'pass', 'pay', 'perform', 'permit', 'pick', 'place', 'plan', 'plant',
  'play', 'point', 'pour', 'practice', 'prefer', 'prepare', 'present',
  'press', 'prevent', 'produce', 'promise', 'promote', 'propose', 'protect',
  'prove', 'provide', 'publish', 'pull', 'push', 'put', 'raise', 'reach',
  'read', 'realize', 'receive', 'recognize', 'recommend', 'record',
  'reduce', 'reflect', 'refuse', 'regard', 'reject', 'relate', 'release',
  'rely', 'remain', 'remember', 'remove', 'repeat', 'replace', 'report',
  'represent', 'request', 'require', 'respond', 'rest', 'restore', 'result', 'rust',
  'retain', 'retire', 'return', 'reveal', 'review', 'ring', 'rise', 'risk',
  'roll', 'run', 'rush', 'save', 'say', 'search', 'seek', 'seem',
  'select', 'sell', 'send', 'serve', 'set', 'settle', 'shake', 'shape',
  'share', 'shift', 'shoot', 'shut', 'sign', 'sing', 'sit', 'skip', 'sleep',
  'slip', 'smile', 'solve', 'sort', 'sound', 'speak', 'spend', 'split',
  'spread', 'stand', 'start', 'state', 'stay', 'steal', 'step', 'stick',
  'stop', 'store', 'strike', 'struggle', 'study', 'submit', 'succeed',
  'suffer', 'suggest', 'suit', 'supply', 'support', 'suppose', 'survive',
  'suspect', 'switch', 'take', 'talk', 'target', 'teach', 'tear', 'tell',
  'tend', 'test', 'thank', 'think', 'throw', 'touch', 'track', 'trade',
  'train', 'travel', 'treat', 'trust', 'try', 'turn', 'understand', 'use',
  'visit', 'vote', 'wait', 'wake', 'walk', 'want', 'warn', 'wash', 'watch',
  'wear', 'weigh', 'win', 'wish', 'wonder', 'work', 'worry', 'wrap', 'write',

  // --- Common nouns (generic, not entity-like) ---
  'access', 'account', 'act', 'action', 'activity', 'addition', 'address',
  'age', 'air', 'amount', 'analysis', 'answer', 'area', 'argument', 'arm',
  'article', 'aspect', 'attention', 'authority', 'balance', 'base', 'basis',
  'bed', 'benefit', 'bit', 'blood', 'board', 'body', 'book', 'bottom',
  'box', 'business', 'capacity', 'capital', 'card', 'care', 'case',
  'centre', 'challenge', 'chance', 'character', 'choice',
  'circle', 'class', 'club', 'code', 'collection', 'colour',
  'comment', 'commission', 'community', 'company', 'comparison', 'competition',
  'concern', 'condition', 'connection', 'content', 'context', 'contract',
  'contribution', 'corner', 'country', 'couple', 'course', 'credit', 'cup',
  'damage', 'danger', 'data', 'date', 'death', 'debate', 'decision',
  'demand', 'department', 'detail', 'development', 'difference', 'direction',
  'discussion', 'disease', 'display', 'distance', 'document', 'door',
  'doubt', 'duty', 'earth', 'edge', 'education', 'effect',
  'effort', 'element', 'end', 'energy', 'engine', 'environment', 'error',
  'event', 'evidence', 'exchange', 'exercise', 'expression',
  'extent', 'eye', 'fact', 'failure', 'family', 'feature',
  'field', 'figure', 'film', 'floor', 'food', 'foot',
  'force', 'foundation', 'front', 'fund', 'game', 'garden', 'gas',
  'glass', 'goal', 'gold', 'grade', 'ground', 'growth', 'guide', 'hair',
  'hall', 'hand', 'heart', 'heat', 'hill', 'history',
  'hole', 'home', 'horse', 'hotel', 'hour', 'house', 'image', 'impact',
  'income', 'index', 'industry', 'information',
  'instance', 'interest', 'investment', 'island', 'item',
  'job', 'kitchen', 'knee', 'knowledge', 'lack', 'language',
  'law', 'league', 'length', 'lesson', 'letter', 'level',
  'library', 'life', 'line', 'list', 'living', 'loss',
  'machine', 'management', 'manner', 'map', 'market', 'mass', 'master',
  'material', 'meeting', 'member', 'memory', 'message', 'metal',
  'method', 'middle', 'minute', 'model', 'moment', 'money',
  'morning', 'mouth', 'movement', 'music', 'name', 'nature',
  'network', 'news', 'night', 'node', 'noise', 'north', 'number',
  'object', 'office', 'officer', 'operation', 'opinion', 'opportunity',
  'option', 'output', 'owner', 'package', 'pair', 'paper',
  'parent', 'part', 'party', 'passage', 'path', 'pattern',
  'performance', 'period', 'person', 'picture', 'player',
  'pleasure', 'pocket', 'position', 'post', 'pound',
  'power', 'pressure', 'price', 'principle', 'problem',
  'procedure', 'process', 'product', 'production', 'programme', 'progress',
  'proof', 'property', 'proposal', 'protection', 'purpose',
  'quality', 'quarter', 'question', 'race', 'range', 'rate', 'reason',
  'reference', 'reform', 'region', 'relation', 'relationship',
  'request', 'research', 'resource', 'response',
  'road', 'role', 'roof', 'room', 'route', 'row', 'rule',
  'safety', 'sale', 'sample', 'scale', 'scene', 'scheme', 'school',
  'science', 'screen', 'season', 'seat', 'section', 'security', 'sense',
  'series', 'service', 'session', 'setting', 'sex',
  'shop', 'shot', 'shoulder', 'show', 'side', 'sight', 'signal',
  'site', 'situation', 'size', 'skin', 'society',
  'software', 'solution', 'song', 'source', 'south',
  'space', 'speech', 'speed', 'spirit', 'sport', 'spring', 'square',
  'staff', 'stage', 'star', 'statement', 'station',
  'status', 'stock', 'stone', 'story', 'strategy',
  'street', 'strength', 'structure', 'student', 'stuff',
  'style', 'subject', 'success', 'summer', 'supply', 'surface',
  'surprise', 'survey', 'system', 'task', 'team', 'technique',
  'technology', 'term', 'text', 'theory', 'thing', 'thought',
  'threat', 'time', 'title', 'tool', 'top', 'tour', 'town',
  'training', 'transfer', 'transport',
  'treatment', 'trial', 'trouble', 'truth', 'type',
  'union', 'unit', 'user', 'valley', 'value', 'variety', 'version',
  'view', 'village', 'voice', 'volume', 'wall', 'war', 'waste', 'water',
  'wave', 'way', 'weather', 'weight', 'west', 'wind', 'window',
  'winter', 'wood', 'word', 'worker', 'world', 'writing',

  // Nationalities / demonyms
  'american', 'british', 'french', 'german', 'chinese', 'japanese',
  'indian', 'russian', 'australian', 'canadian', 'italian', 'spanish',
  'dutch', 'swiss', 'irish', 'scottish', 'welsh', 'english',
  'european', 'african', 'asian', 'brazilian', 'mexican', 'korean',
  'turkish', 'polish', 'swedish', 'norwegian', 'danish', 'finnish',

  // Multi-word production false positives
  'front door', 'back door', 'side door',
]);

/**
 * Words that are always capitalized in English — case-sensitive matching
 * cannot distinguish proper-noun vs common usage for these.
 */
export const ALWAYS_CAPITALIZED = new Set([
  // Day names
  'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday',
  // Month names
  'january', 'february', 'march', 'april', 'may', 'june', 'july', 'august',
  'september', 'october', 'november', 'december',
  // Nationalities / demonyms
  'american', 'british', 'french', 'german', 'chinese', 'japanese',
  'indian', 'russian', 'australian', 'canadian', 'italian', 'spanish',
  'dutch', 'swiss', 'irish', 'scottish', 'welsh', 'english',
]);

/**
 * Common words that should not be detected as implicit entities
 */
export const IMPLICIT_EXCLUDE_WORDS = new Set([
  // Days and months
  'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday',
  'january', 'february', 'march', 'april', 'may', 'june', 'july', 'august',
  'september', 'october', 'november', 'december',
  // Common sentence starters / determiners
  'this', 'that', 'these', 'those', 'there', 'here', 'when', 'where', 'what',
  'which', 'while', 'since', 'after', 'before', 'during', 'until', 'because',
  'however', 'therefore', 'although', 'though', 'unless', 'whether',
  // Document/structure words
  'note', 'notes', 'example', 'chapter', 'section', 'part', 'item', 'figure',
  'table', 'list', 'step', 'task', 'todo', 'idea', 'thought', 'question',
  'answer', 'summary', 'overview', 'introduction', 'conclusion',
  'project', 'projects', 'top', 'bottom', 'page', 'pages', 'link', 'links',
  'file', 'files', 'folder', 'draft', 'type', 'title', 'tag', 'tags',
  'status', 'priority', 'release', 'ticket', 'essential', 'review',
  // Technical terms that look like proper nouns
  'true', 'false', 'null', 'undefined', 'none', 'class', 'function', 'method',
  // Common short words that appear as ALL-CAPS but aren't entities
  'the', 'and', 'but', 'for', 'not', 'you', 'all', 'can', 'had', 'her',
  'was', 'one', 'our', 'out', 'are', 'has', 'his', 'how', 'its', 'may',
  'new', 'now', 'old', 'see', 'way', 'who', 'did', 'got', 'let', 'say',
  // Common abbreviations
  'etc', 'aka', 'btw', 'fyi', 'imo', 'tldr', 'asap', 'rsvp',
  'url', 'html', 'css', 'http', 'https', 'json', 'xml', 'sql', 'ssh', 'tcp', 'udp', 'dns',

  // --- Common adjectives (capitalized at sentence starts) ---
  'able', 'absolute', 'acceptable', 'accessible', 'accurate', 'actual',
  'additional', 'adequate', 'advanced', 'aggressive', 'alive', 'alternative',
  'amazing', 'ancient', 'angry', 'annual', 'apparent', 'applicable',
  'appropriate', 'approximate', 'arbitrary', 'automatic', 'available',
  'aware', 'awful', 'awkward',
  'bad', 'bare', 'beautiful', 'beneficial', 'best', 'better', 'big',
  'bitter', 'blank', 'blind', 'bold', 'boring', 'brave', 'brief',
  'bright', 'brilliant', 'broad', 'broken', 'busy',
  'calm', 'capable', 'careful', 'casual', 'central', 'certain', 'cheap',
  'clean', 'clear', 'clever', 'close', 'cold', 'comfortable', 'common',
  'comparable', 'compatible', 'competitive', 'complete', 'complex',
  'comprehensive', 'concerned', 'concrete', 'confident', 'confused',
  'conscious', 'conservative', 'considerable', 'consistent', 'constant',
  'content', 'continuous', 'convenient', 'conventional', 'cool', 'correct',
  'corresponding', 'costly', 'crazy', 'creative', 'critical', 'crucial',
  'curious', 'current', 'custom',
  'dangerous', 'dark', 'dead', 'dear', 'decent', 'deep', 'defensive',
  'definite', 'deliberate', 'delicate', 'dense', 'dependent', 'desperate',
  'detailed', 'different', 'difficult', 'digital', 'direct', 'dirty',
  'distinct', 'double', 'dramatic', 'dry', 'due', 'dull', 'dumb',
  'eager', 'early', 'eastern', 'easy', 'economic', 'educational',
  'effective', 'efficient', 'elaborate', 'elderly', 'electric', 'elegant',
  'emotional', 'empty', 'encouraging', 'endless', 'enormous', 'entire',
  'equal', 'equivalent', 'essential', 'even', 'eventual', 'every',
  'everyday', 'evident', 'evil', 'exact', 'excellent', 'exceptional',
  'excessive', 'exciting', 'exclusive', 'existing', 'exotic', 'expensive',
  'experienced', 'experimental', 'explicit', 'extended', 'extensive',
  'external', 'extra', 'extraordinary', 'extreme',
  'fair', 'faithful', 'familiar', 'famous', 'fancy', 'fantastic', 'far',
  'fascinating', 'fast', 'fat', 'fatal', 'favorable', 'favourite', 'federal',
  'fierce', 'final', 'financial', 'fine', 'firm', 'fit', 'fixed', 'flat',
  'flexible', 'fluid', 'foolish', 'foreign', 'formal', 'former', 'forward',
  'fragile', 'free', 'frequent', 'fresh', 'friendly', 'front', 'frozen',
  'full', 'fun', 'functional', 'fundamental', 'funny', 'further', 'future',
  'general', 'generous', 'gentle', 'genuine', 'giant', 'glad', 'global',
  'golden', 'good', 'gorgeous', 'gradual', 'grand', 'grateful', 'grave',
  'great', 'green', 'grey', 'gross', 'growing', 'guilty',
  'half', 'handsome', 'handy', 'happy', 'hard', 'harmful', 'harsh',
  'healthy', 'heavy', 'helpful', 'hidden', 'high', 'historic', 'honest',
  'horrible', 'hostile', 'hot', 'huge', 'humble', 'hungry',
  'ideal', 'identical', 'immediate', 'immense', 'immune', 'implicit',
  'important', 'impossible', 'impressive', 'inadequate', 'inappropriate',
  'incredible', 'independent', 'indirect', 'individual', 'industrial',
  'inevitable', 'infinite', 'informal', 'inherent', 'initial', 'inner',
  'innocent', 'innovative', 'instant', 'insufficient', 'intelligent',
  'intense', 'intensive', 'interactive', 'interesting', 'interim',
  'intermediate', 'internal', 'international', 'invalid', 'invisible',
  'irrelevant', 'isolated',
  'joint', 'junior', 'just',
  'keen', 'key', 'kind',
  'large', 'last', 'late', 'lateral', 'latest', 'lazy', 'lean', 'least',
  'legitimate', 'lengthy', 'less', 'lesser', 'level', 'liberal', 'light',
  'likely', 'limited', 'linear', 'literal', 'little', 'live', 'lively',
  'local', 'logical', 'lone', 'lonely', 'long', 'loose', 'loud', 'lovely',
  'low', 'loyal', 'lucky',
  'mad', 'magic', 'main', 'major', 'male', 'manual', 'many', 'marginal',
  'massive', 'mature', 'maximum', 'mean', 'meaningful', 'mechanical',
  'medical', 'medium', 'mental', 'mere', 'mild', 'military', 'minimal',
  'minimum', 'minor', 'minute', 'missing', 'mixed', 'mobile', 'moderate',
  'modern', 'modest', 'moral', 'more', 'most', 'multiple', 'mutual',
  'naked', 'narrow', 'nasty', 'native', 'natural', 'neat', 'necessary',
  'negative', 'nervous', 'neutral', 'nice', 'noble', 'nominal', 'normal',
  'notable', 'novel', 'numerous',
  'obvious', 'occasional', 'odd', 'offensive', 'official', 'only', 'open',
  'operational', 'opposite', 'optimal', 'optional', 'ordinary', 'organic',
  'original', 'other', 'outer', 'overall', 'overnight', 'own',
  'painful', 'pale', 'parallel', 'partial', 'particular', 'passive', 'past',
  'patient', 'peaceful', 'peculiar', 'perfect', 'permanent', 'personal',
  'physical', 'plain', 'pleasant', 'plenty', 'plus', 'polite', 'political',
  'poor', 'popular', 'portable', 'positive', 'possible', 'potential',
  'powerful', 'practical', 'precise', 'predictable', 'preliminary',
  'premium', 'prepared', 'present', 'pretty', 'previous',
  'primary', 'prime', 'primitive', 'principal', 'prior', 'private',
  'probable', 'productive', 'professional', 'profitable', 'profound',
  'progressive', 'prominent', 'promising', 'proper', 'proportional',
  'proposed', 'prospective', 'protective', 'proud', 'provisional', 'public',
  'pure',
  'quick', 'quiet',
  'radical', 'random', 'rapid', 'rare', 'rational', 'raw', 'ready', 'real',
  'realistic', 'reasonable', 'recent', 'regional', 'regular', 'related',
  'relative', 'relevant', 'reliable', 'reluctant', 'remaining', 'remarkable',
  'remote', 'repeated', 'representative', 'required', 'residential',
  'respective', 'responsible', 'rich', 'rigid', 'right', 'rising', 'robust',
  'rough', 'round', 'royal', 'rude', 'rural',
  'sacred', 'sad', 'safe', 'satisfactory', 'scared', 'scattered', 'secure',
  'selective', 'senior', 'sensitive', 'separate', 'serious', 'severe',
  'shallow', 'sharp', 'sheer', 'short', 'shy', 'sick', 'significant',
  'silent', 'silly', 'similar', 'simple', 'single', 'slight', 'slim',
  'slow', 'small', 'smart', 'smooth', 'sober', 'social', 'soft', 'solar',
  'sole', 'solid', 'sophisticated', 'sorry', 'sound', 'southern', 'spare',
  'spatial', 'special', 'specific', 'spectacular', 'spiritual', 'splendid',
  'spontaneous', 'stable', 'standard', 'static', 'statistical', 'steady',
  'steep', 'sticky', 'stiff', 'straight', 'strange', 'strategic', 'strict',
  'striking', 'strong', 'structural', 'stupid', 'subject', 'substantial',
  'subtle', 'successful', 'successive', 'such', 'sudden', 'sufficient',
  'suitable', 'super', 'superb', 'superior', 'supreme', 'sure', 'surgical',
  'surprised', 'surprising', 'suspicious', 'sweet', 'swift', 'symbolic',
  'sympathetic',
  'tall', 'technical', 'temporary', 'tender', 'terrible', 'thick', 'thin',
  'thorough', 'tight', 'tiny', 'tired', 'top', 'total', 'tough',
  'traditional', 'tremendous', 'tropical', 'true', 'typical',
  'ugly', 'ultimate', 'unable', 'uncertain', 'underlying', 'unfair',
  'unfortunate', 'unhappy', 'uniform', 'unique', 'universal', 'unknown',
  'unlikely', 'unnecessary', 'unpleasant', 'unprecedented', 'unusual',
  'upper', 'upset', 'urban', 'urgent', 'useful', 'useless', 'usual',
  'valid', 'valuable', 'variable', 'various', 'vast', 'verbal', 'vertical',
  'viable', 'violent', 'virtual', 'visible', 'visual', 'vital', 'vivid',
  'voluntary', 'vulnerable',
  'warm', 'weak', 'wealthy', 'weird', 'welcome', 'western', 'wet', 'white',
  'whole', 'wicked', 'wide', 'widespread', 'wild', 'willing', 'wise',
  'wonderful', 'wooden', 'working', 'worried', 'worse', 'worst', 'worth',
  'worthy', 'wrong',
  'young',

  // --- Common verbs / past participles (capitalized at sentence starts) ---
  'accepted', 'achieved', 'acquired', 'added', 'adjusted', 'adopted',
  'affected', 'agreed', 'allowed', 'announced', 'applied', 'appointed',
  'approved', 'argued', 'arranged', 'arrived', 'asked', 'assessed',
  'assigned', 'associated', 'assumed', 'attached', 'attempted', 'attended',
  'based', 'beaten', 'become', 'begun', 'believed', 'belonged', 'blocked',
  'born', 'bought', 'brought', 'built', 'buried', 'burned',
  'called', 'captured', 'carried', 'caught', 'caused', 'challenged',
  'changed', 'charged', 'checked', 'chosen', 'claimed', 'cleaned',
  'cleared', 'closed', 'collected', 'combined', 'compared', 'compiled',
  'completed', 'complicated', 'composed', 'concerned', 'concluded',
  'conducted', 'confirmed', 'connected', 'considered', 'constructed',
  'contained', 'continued', 'contributed', 'controlled', 'converted',
  'convinced', 'cooked', 'copied', 'corrected', 'covered', 'created',
  'crossed', 'crushed', 'customized',
  'damaged', 'dealt', 'decided', 'declared', 'declined', 'dedicated',
  'defeated', 'defined', 'delivered', 'demanded', 'demonstrated', 'denied',
  'deployed', 'derived', 'described', 'designed', 'desired', 'destroyed',
  'detected', 'determined', 'developed', 'devoted', 'directed', 'disabled',
  'disappointed', 'discovered', 'discussed', 'dismissed', 'displayed',
  'distributed', 'divided', 'documented', 'dominated', 'done', 'doubled',
  'downloaded', 'drafted', 'drawn', 'dressed', 'driven', 'dropped',
  'earned', 'edited', 'educated', 'elected', 'eliminated', 'embedded',
  'emerged', 'employed', 'enabled', 'encountered', 'encouraged', 'ended',
  'engaged', 'enhanced', 'enjoyed', 'entered', 'equipped', 'escaped',
  'established', 'estimated', 'evaluated', 'examined', 'exceeded',
  'exchanged', 'excluded', 'executed', 'exercised', 'exhausted', 'expanded',
  'expected', 'experienced', 'explained', 'exposed', 'expressed', 'extended',
  'extracted',
  'faced', 'failed', 'fallen', 'featured', 'fed', 'felt', 'filed',
  'filled', 'filtered', 'finalised', 'finalized', 'finished', 'fired',
  'fixed', 'flagged', 'flipped', 'floated', 'followed', 'forced',
  'forgotten', 'formed', 'formatted', 'found', 'founded', 'freed', 'frozen',
  'fulfilled', 'funded', 'furnished',
  'gained', 'gathered', 'generated', 'given', 'gone', 'grabbed', 'granted',
  'grown', 'guaranteed', 'guided',
  'handled', 'happened', 'heard', 'heated', 'held', 'helped', 'hidden',
  'highlighted', 'hired', 'hosted', 'hurt',
  'identified', 'ignored', 'illustrated', 'imagined', 'implemented',
  'implied', 'imported', 'imposed', 'improved', 'included', 'incorporated',
  'increased', 'indicated', 'influenced', 'informed', 'inherited',
  'initiated', 'injured', 'inserted', 'inspired', 'installed', 'integrated',
  'intended', 'interested', 'interpreted', 'introduced', 'invaded',
  'invested', 'investigated', 'invited', 'involved', 'isolated', 'issued',
  'joined', 'judged', 'jumped', 'justified',
  'kept', 'kicked', 'killed', 'knocked', 'known',
  'labelled', 'lacked', 'laid', 'landed', 'lasted', 'launched', 'learned',
  'learnt', 'left', 'lifted', 'liked', 'lined', 'linked',
  'listed', 'listened', 'lived', 'loaded', 'located', 'locked', 'logged',
  'looked', 'lost', 'loved', 'lowered',
  'made', 'maintained', 'managed', 'manufactured', 'mapped', 'marked',
  'matched', 'meant', 'measured', 'mentioned', 'merged', 'met', 'migrated',
  'minded', 'missed', 'mixed', 'modified', 'monitored', 'motivated',
  'mounted', 'moved', 'multiplied',
  'named', 'needed', 'negotiated', 'nested', 'nominated', 'normalised',
  'noted', 'noticed',
  'observed', 'obtained', 'occupied', 'occurred', 'offered', 'opened',
  'operated', 'opposed', 'ordered', 'organised', 'organized', 'oriented',
  'outlined', 'overcome', 'overlooked', 'owned',
  'packed', 'paid', 'paired', 'parsed', 'passed', 'patched', 'performed',
  'permitted', 'picked', 'pinned', 'placed', 'planned', 'planted', 'played',
  'pleased', 'pointed', 'polished', 'positioned', 'posted', 'poured',
  'powered', 'practised', 'preferred', 'prepared', 'presented', 'preserved',
  'pressed', 'prevented', 'priced', 'printed', 'prioritised', 'processed',
  'produced', 'programmed', 'promised', 'promoted', 'prompted', 'proposed',
  'protected', 'proved', 'proven', 'provided', 'published', 'pulled',
  'purchased', 'pushed', 'put',
  'qualified', 'queried', 'questioned', 'quoted',
  'raised', 'ran', 'ranked', 'rated', 'reached', 'read', 'realised',
  'realized', 'received', 'recognised', 'recognized', 'recommended',
  'recorded', 'recovered', 'reduced', 'referred', 'reflected', 'reformed',
  'refused', 'regarded', 'registered', 'regulated', 'rejected', 'related',
  'released', 'relied', 'remained', 'remembered', 'reminded', 'removed',
  'renamed', 'renewed', 'repaired', 'repeated', 'replaced', 'replied',
  'reported', 'represented', 'requested', 'required', 'rescued', 'reserved',
  'resigned', 'resolved', 'responded', 'restored', 'restricted', 'resulted',
  'retained', 'retired', 'retrieved', 'returned', 'revealed', 'reversed',
  'reviewed', 'revised', 'rewarded', 'rolled', 'rotated', 'rounded', 'ruled',
  'rushed',
  'satisfied', 'saved', 'scaled', 'scanned', 'scattered', 'scheduled',
  'scored', 'searched', 'secured', 'selected', 'sent', 'separated', 'served',
  'settled', 'shaped', 'shared', 'shifted', 'shipped', 'shocked', 'shown',
  'shut', 'signed', 'simplified', 'situated', 'skipped', 'slipped', 'sold',
  'solved', 'sorted', 'sought', 'sourced', 'spent', 'split', 'spoken',
  'sponsored', 'spotted', 'spread', 'staged', 'started', 'stated',
  'stayed', 'stolen', 'stopped', 'stored', 'strengthened', 'stretched',
  'struck', 'structured', 'studied', 'submitted', 'succeeded', 'suffered',
  'suggested', 'suited', 'summarised', 'supplied', 'supported', 'supposed',
  'surprised', 'surrounded', 'survived', 'suspected', 'suspended',
  'sustained', 'switched',
  'taken', 'talked', 'targeted', 'taught', 'tested', 'thanked', 'thought',
  'threatened', 'thrown', 'tied', 'titled', 'told', 'topped', 'torn',
  'touched', 'traced', 'tracked', 'traded', 'trained', 'transferred',
  'transformed', 'translated', 'transmitted', 'transported', 'trapped',
  'travelled', 'treated', 'triggered', 'troubled', 'trusted', 'turned',
  'typed',
  'understood', 'undertaken', 'unified', 'united', 'unlocked', 'updated',
  'upgraded', 'uploaded', 'urged', 'used', 'utilised',
  'validated', 'valued', 'varied', 'verified', 'viewed', 'visited', 'voted',
  'waited', 'walked', 'wanted', 'warned', 'washed', 'watched', 'welcomed',
  'withdrawn', 'witnessed', 'won', 'wondered', 'worked', 'worried',
  'wrapped', 'written',

  // --- Common nouns (non-entity, capitalized at sentence starts) ---
  'absence', 'access', 'account', 'accuracy', 'achievement', 'acquisition',
  'act', 'action', 'activity', 'addition', 'address', 'administration',
  'admission', 'adoption', 'adult', 'advance', 'advantage', 'advice',
  'affair', 'afternoon', 'age', 'agency', 'agenda', 'agreement', 'aid',
  'aim', 'air', 'alarm', 'alternative', 'ambition', 'amendment', 'amount',
  'analysis', 'anger', 'angle', 'announcement', 'anxiety', 'appeal',
  'appearance', 'application', 'appointment', 'approach', 'approval',
  'argument', 'arrangement', 'arrival', 'aspect', 'assembly', 'assessment',
  'asset', 'assignment', 'assistance', 'association', 'assumption',
  'atmosphere', 'attachment', 'attack', 'attempt', 'attendance', 'attention',
  'attitude', 'audience', 'authority', 'average', 'awareness',
  'background', 'balance', 'band', 'barrier', 'base', 'basis', 'battle',
  'beauty', 'bedroom', 'beginning', 'behaviour', 'belief', 'benefit',
  'birth', 'blade', 'blame', 'blast', 'block', 'blow', 'boat', 'bond',
  'bone', 'bonus', 'border', 'boss', 'boundary', 'brain', 'brand', 'breath',
  'brick', 'broadcast', 'brother', 'browser', 'budget', 'bug', 'bulk',
  'burden', 'buyer',
  'cabinet', 'cable', 'calculation', 'campaign', 'candidate', 'capability',
  'captain', 'career', 'cargo', 'carpet', 'carrier', 'cash', 'cast',
  'catalogue', 'category', 'cause', 'ceiling', 'celebration', 'chain',
  'chair', 'chairman', 'champion', 'channel', 'chapter', 'charity', 'chart',
  'check', 'chest', 'child', 'chip', 'chunk', 'circuit', 'citizen', 'city',
  'civilian', 'claim', 'clarity', 'clash', 'clause', 'client', 'climate',
  'clock', 'closure', 'cloth', 'cloud', 'cluster', 'coach', 'coalition',
  'coast', 'collaboration', 'collapse', 'colleague',
  'colony', 'column', 'combination', 'comfort', 'command', 'commander',
  'comment', 'commerce', 'commission', 'commitment', 'committee',
  'companion', 'complaint', 'complexity', 'component', 'composition',
  'compromise', 'concentration', 'concept', 'conclusion', 'confidence',
  'configuration', 'confirmation', 'conflict', 'confusion', 'conjunction',
  'consequence', 'conservation', 'consideration', 'constraint', 'consultant',
  'consultation', 'consumer', 'consumption', 'contact', 'container',
  'contempt', 'continent', 'continuation', 'controversy', 'convention',
  'conversation', 'conviction', 'cooperation', 'coordination', 'core',
  'correction', 'correlation', 'correspondent', 'corridor', 'corruption',
  'counter', 'countryside', 'coverage', 'crash', 'creature',
  'crew', 'crime', 'crisis', 'criterion', 'criticism', 'crop', 'crowd',
  'crown', 'currency', 'curriculum', 'curve', 'customer', 'cycle',

  // --- Common adverbs (capitalized at sentence starts) ---
  'absolutely', 'accordingly', 'accurately', 'actively', 'actually',
  'additionally', 'admittedly', 'allegedly', 'alternatively', 'altogether',
  'amazingly', 'apparently', 'arguably', 'automatically',
  'barely', 'basically', 'briefly', 'broadly',
  'carefully', 'casually', 'cautiously', 'certainly',
  'clearly', 'closely', 'collectively', 'commonly',
  'comparatively', 'completely', 'consequently', 'considerably',
  'consistently', 'constantly', 'continuously', 'conversely', 'correctly',
  'critically', 'crucially', 'curiously', 'currently',
  'definitely', 'deliberately', 'desperately', 'directly', 'distinctly',
  'dramatically',
  'easily', 'effectively', 'efficiently', 'elegantly', 'elsewhere',
  'emotionally', 'enormously', 'entirely', 'equally',
  'especially', 'essentially', 'eventually', 'evidently', 'exactly',
  'exclusively', 'explicitly', 'extensively', 'externally', 'extremely',
  'fairly', 'famously', 'finally', 'firmly', 'firstly', 'formally',
  'formerly', 'fortunately', 'frankly', 'freely', 'frequently',
  'fundamentally',
  'generally', 'gently', 'genuinely', 'gradually', 'greatly',
  'happily', 'hardly', 'heavily', 'hence', 'highly', 'honestly',
  'hopefully', 'hugely',
  'ideally', 'immediately', 'immensely',
  'importantly', 'impressively', 'incidentally',
  'increasingly', 'incredibly', 'independently', 'indirectly',
  'individually', 'inevitably', 'informally', 'inherently', 'initially',
  'intensely', 'intentionally', 'interestingly', 'internally', 'ironically',
  'jointly',
  'kindly',
  'largely', 'lastly', 'lately', 'legally', 'legitimately', 'literally',
  'locally', 'logically', 'loosely',
  'mainly', 'manually', 'marginally', 'meanwhile',
  'merely', 'mildly', 'minimally', 'moderately', 'morally',
  'moreover', 'mostly', 'mutually',
  'namely', 'naturally', 'neatly', 'necessarily', 'negatively',
  'nevertheless', 'newly', 'nicely', 'nominally',
  'nonetheless', 'normally', 'notably', 'noticeably',
  'objectively', 'obviously', 'occasionally', 'oddly',
  'officially', 'openly', 'optimally', 'ordinarily',
  'originally', 'otherwise', 'overall', 'overwhelmingly',
  'partially', 'particularly', 'partly', 'passively',
  'patiently', 'perfectly', 'periodically', 'permanently', 'personally',
  'physically', 'plainly', 'politely', 'politically',
  'poorly', 'positively', 'possibly', 'potentially',
  'practically', 'precisely', 'predominantly', 'preferably', 'presently',
  'presumably', 'pretty', 'previously', 'primarily', 'principally',
  'privately', 'probably', 'professionally', 'profoundly',
  'progressively', 'prominently', 'promptly', 'properly', 'proportionally',
  'publicly', 'purely',
  'quickly', 'quietly', 'quite',
  'radically', 'randomly', 'rapidly', 'rarely', 'rationally', 'readily',
  'realistically', 'really', 'reasonably', 'recently', 'regardless',
  'regularly', 'relatively', 'reliably', 'reluctantly',
  'remarkably', 'remotely', 'repeatedly', 'reportedly', 'respectively',
  'responsibly', 'roughly',
  'sadly', 'safely', 'scarcely', 'secondly', 'secretly', 'seemingly',
  'selectively', 'separately', 'seriously', 'severely', 'sharply',
  'shortly', 'significantly', 'silently', 'similarly', 'simply',
  'simultaneously', 'sincerely', 'slightly', 'slowly', 'smoothly',
  'socially', 'solely', 'somehow', 'sometimes', 'somewhat', 'soon',
  'specifically', 'spontaneously', 'steadily', 'steeply',
  'still', 'strategically', 'strictly', 'strikingly', 'strongly',
  'structurally', 'subsequently', 'substantially', 'subtly', 'successfully',
  'suddenly', 'sufficiently', 'supposedly', 'surely', 'surprisingly',
  'swiftly', 'systematically',
  'technically', 'temporarily', 'terribly', 'thankfully',
  'thoroughly', 'tightly', 'together', 'traditionally', 'tremendously',
  'truly', 'typically',
  'ultimately', 'undoubtedly',
  'unexpectedly', 'unfortunately', 'uniformly', 'universally',
  'unnecessarily', 'unusually', 'urgently',
  'usefully', 'usually', 'utterly',
  'vastly', 'virtually', 'visually',
  'warmly', 'weakly', 'widely', 'wildly', 'willingly', 'wisely',
]);

/**
 * Words that commonly start sentences but should not start a proper noun entity.
 * These are checked separately because they might appear capitalized at sentence start.
 */
export const SENTENCE_STARTER_WORDS = new Set([
  // Imperative verbs
  'visit', 'see', 'please', 'note', 'check', 'read', 'look', 'find',
  'get', 'set', 'add', 'use', 'try', 'make', 'take', 'give', 'keep', 'let',
  'call', 'run', 'ask', 'tell', 'show', 'help', 'need', 'want', 'like',
  'think', 'know', 'feel', 'seem', 'hear', 'watch', 'wait', 'work',
  'start', 'stop', 'open', 'close', 'move', 'turn', 'bring', 'send', 'leave',
  'meet', 'join', 'follow', 'include', 'consider', 'remember', 'forget',
  'target', 'create', 'build', 'write', 'avoid', 'provide', 'maintain',
  'define', 'ensure', 'place', 'focus', 'track', 'enable', 'apply', 'test',
  'handle', 'load', 'link', 'pass', 'save', 'lead', 'frame', 'point',
  // Greetings / interjections
  'hello', 'hi', 'hey', 'thanks', 'thank', 'sorry',
  // Titles
  'mr', 'mrs', 'ms', 'dr', 'sir',
  // Pronouns, possessives, determiners
  'my', 'your', 'his', 'her', 'its', 'our', 'their',
  'some', 'any', 'every', 'each', 'both', 'few', 'many', 'most',
  // Common starters (conjunctions, adverbs, auxiliaries)
  'so', 'no', 'yes', 'not', 'never', 'always', 'also', 'just', 'only', 'already',
  'here', 'there', 'then', 'now', 'when', 'how', 'even', 'still',
  'go', 'went', 'gone', 'going',
  'had', 'have', 'has', 'having',
  'been', 'being', 'was', 'were',
  'got', 'getting', 'put', 'putting',
  'said', 'told', 'asked', 'called',
  'do', 'did', 'does', 'done',
  // Common adjectives at sentence start
  'poor', 'old', 'new', 'big', 'little', 'great', 'good', 'bad',
  'first', 'last', 'next', 'other', 'more', 'very',
  'clear', 'fixed', 'based', 'using', 'real',
  'safe', 'local', 'native', 'early', 'similar', 'simple', 'basic', 'related',
  'skip', 'don', 'won',
]);
