feat(ebook): add protected phrase extraction library with config-driven tuning

Refactor protected phrase handling from a single module into a
python/ebook_search/protected_phrases package covering extraction,
storage, and runtime matching. Phrase filtering is now data-driven via
bundled TOML files: ignored_phrases, bad_starts, bad_ends, and
most_common_words.

Add phrase-tuning settings to EbookSearchConfig so candidate generation,
scoring, LLM judging, and matching are configurable rather than hardcoded:
token bounds, entity token limit, raw n-gram min count, frequency and
chapter-spread score thresholds, candidate/LLM/target caps, confidence
threshold, nesting defaults, and the phrase hit boost.
This commit is contained in:
2026-07-09 11:04:59 -04:00
parent 3e164831b5
commit 1eecf7181d
7 changed files with 2296 additions and 0 deletions
File diff suppressed because it is too large Load Diff