feat(text-service): Add engine selection and structured output #66
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Engine Selection and Structured Output for TextService
Changes
This PR implements the engine selection functionality for the TextService class as outlined in ticket #XX. It allows users to choose between different annotation engines while maintaining backward compatibility.
New Features
Engine Selection: Added an [engine] parameter to TextService that accepts:
"regex"
: Uses only RegexAnnotator (fastest, pattern-based)"spacy"
: Uses only SpacyPIIAnnotator (more comprehensive)"auto"
: Default mode that tries regex first and falls back to spaCy if no entities foundStructured Output: Added a
structured
parameter to annotation methods that returns a list ofSpan
objects with:label
: Entity type (e.g., "EMAIL", "PERSON")start
: Character offset where entity beginsend
: Character offset where entity endsImplementation Details
Testing
All tests pass, including the new integration tests specifically created for these features. The implementation maintains backward compatibility with existing code.