mirror of
https://github.com/explosion/spaCy.git
synced 2024-12-28 02:46:35 +03:00
a322d6d5f2
* Add SpanRuler component Add a `SpanRuler` component similar to `EntityRuler` that saves a list of matched spans to `Doc.spans[spans_key]`. The matches from the token and phrase matchers are deduplicated and sorted before assignment but are not otherwise filtered. * Update spacy/pipeline/span_ruler.py Co-authored-by: Sofie Van Landeghem <svlandeg@users.noreply.github.com> * Fix cast * Add self.key property * Use number of patterns as length * Remove patterns kwarg from init * Update spacy/tests/pipeline/test_span_ruler.py Co-authored-by: Sofie Van Landeghem <svlandeg@users.noreply.github.com> * Add options for spans filter and setting to ents * Add `spans_filter` option as a registered function' * Make `spans_key` optional and if `None`, set to `doc.ents` instead of `doc.spans[spans_key]`. * Update and generalize tests * Add test for setting doc.ents, fix key property type * Fix typing * Allow independent doc.spans and doc.ents * If `spans_key` is set, set `doc.spans` with `spans_filter`. * If `annotate_ents` is set, set `doc.ents` with `ents_fitler`. * Use `util.filter_spans` by default as `ents_filter`. * Use a custom warning if the filter does not work for `doc.ents`. * Enable use of SpanC.id in Span * Support id in SpanRuler as Span.id * Update types * `id` can only be provided as string (already by `PatternType` definition) * Update all uses of Span.id/ent_id in Doc * Rename Span id kwarg to span_id * Update types and docs * Add ents filter to mimic EntityRuler overwrite_ents * Refactor `ents_filter` to take `entities, spans` args for more filtering options * Give registered filters more descriptive names * Allow registered `filter_spans` filter (`spacy.first_longest_spans_filter.v1`) to take any number of `Iterable[Span]` objects as args so it can be used for spans filter or ents filter * Implement future entity ruler as span ruler Implement a compatible `entity_ruler` as `future_entity_ruler` using `SpanRuler` as the underlying component: * Add `sort_key` and `sort_reverse` to allow the sorting behavior to be customized. (Necessary for the same sorting/filtering as in `EntityRuler`.) * Implement `overwrite_overlapping_ents_filter` and `preserve_existing_ents_filter` to support `EntityRuler.overwrite_ents` settings. * Add `remove_by_id` to support `EntityRuler.remove` functionality. * Refactor `entity_ruler` tests to parametrize all tests to test both `entity_ruler` and `future_entity_ruler` * Implement `SpanRuler.token_patterns` and `SpanRuler.phrase_patterns` properties. Additional changes: * Move all config settings to top-level attributes to avoid duplicating settings in the config vs. `span_ruler/cfg`. (Also avoids a lot of casting.) * Format * Fix filter make method name * Refactor to use same error for removing by label or ID * Also provide existing spans to spans filter * Support ids property * Remove token_patterns and phrase_patterns * Update docstrings * Add span ruler docs * Fix types * Apply suggestions from code review Co-authored-by: Sofie Van Landeghem <svlandeg@users.noreply.github.com> * Move sorting into filters * Check for all tokens in seen tokens in entity ruler filters * Remove registered sort key * Set Token.ent_id in a backwards-compatible way in Doc.set_ents * Remove sort options from API docs * Update docstrings * Rename entity ruler filters * Fix and parameterize scoring * Add id to Span API docs * Fix typo in API docs * Include explicit labeled=True for scorer Co-authored-by: Sofie Van Landeghem <svlandeg@users.noreply.github.com>
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
from .attributeruler import AttributeRuler
|
|
from .dep_parser import DependencyParser
|
|
from .edit_tree_lemmatizer import EditTreeLemmatizer
|
|
from .entity_linker import EntityLinker
|
|
from .ner import EntityRecognizer
|
|
from .entityruler import EntityRuler
|
|
from .lemmatizer import Lemmatizer
|
|
from .morphologizer import Morphologizer
|
|
from .pipe import Pipe
|
|
from .trainable_pipe import TrainablePipe
|
|
from .senter import SentenceRecognizer
|
|
from .sentencizer import Sentencizer
|
|
from .tagger import Tagger
|
|
from .textcat import TextCategorizer
|
|
from .spancat import SpanCategorizer
|
|
from .span_ruler import SpanRuler
|
|
from .textcat_multilabel import MultiLabel_TextCategorizer
|
|
from .tok2vec import Tok2Vec
|
|
from .functions import merge_entities, merge_noun_chunks, merge_subtokens
|
|
|
|
__all__ = [
|
|
"AttributeRuler",
|
|
"DependencyParser",
|
|
"EntityLinker",
|
|
"EntityRecognizer",
|
|
"EntityRuler",
|
|
"Morphologizer",
|
|
"Lemmatizer",
|
|
"MultiLabel_TextCategorizer",
|
|
"Pipe",
|
|
"SentenceRecognizer",
|
|
"Sentencizer",
|
|
"SpanCategorizer",
|
|
"SpanRuler",
|
|
"Tagger",
|
|
"TextCategorizer",
|
|
"Tok2Vec",
|
|
"TrainablePipe",
|
|
"merge_entities",
|
|
"merge_noun_chunks",
|
|
"merge_subtokens",
|
|
]
|