wuenlp_tools.models.scenes.embedding
1from typing import Type 2 3from wuenlp import UIMADocument 4from wuenlp.impl.uima import UIMASystemScene, UIMASpan 5 6from wuenlp_tools.pipeline import PipelineStep, PipelineProcessor, PipelineCapability 7from wuenlp_tools.utils.embedding import TextEmbedder, OpenAIEmbeddingSmall 8 9 10class SceneEmbedProcessor(PipelineProcessor): 11 def __init__(self, embedder: TextEmbedder): 12 self.embedder = embedder 13 14 def __call__(self, doc: UIMADocument, unit_type: Type[UIMASpan] = UIMASystemScene, overwrite: bool = False, 15 **kwargs) -> UIMADocument: 16 for scene in doc.system_scenes: 17 embedding = self.embedder(scene.text) 18 19 scene.additional_features["text_embedding"] = embedding 20 21 return doc 22 23 24SceneEmbedder = PipelineStep("Scene Embedder", SceneEmbedProcessor(TextEmbedder(OpenAIEmbeddingSmall)), 25 unit_type=UIMASystemScene, added_additional_features=["text_embedding"], 26 provides=[PipelineCapability.SCENE_EMBEDDINGS], requires=[PipelineCapability.SCENES])
class
SceneEmbedProcessor(wuenlp_tools.pipeline.AbstractPipelineProcessor[wuenlp.impl.uima.UIMANLPStructs.UIMADocument]):
11class SceneEmbedProcessor(PipelineProcessor): 12 def __init__(self, embedder: TextEmbedder): 13 self.embedder = embedder 14 15 def __call__(self, doc: UIMADocument, unit_type: Type[UIMASpan] = UIMASystemScene, overwrite: bool = False, 16 **kwargs) -> UIMADocument: 17 for scene in doc.system_scenes: 18 embedding = self.embedder(scene.text) 19 20 scene.additional_features["text_embedding"] = embedding 21 22 return doc
Base class for protocol classes.
Protocol classes are defined as::
class Proto(Protocol):
def meth(self) -> int:
...
Such classes are primarily used with static type checkers that recognize structural subtyping (static duck-typing).
For example::
class C:
def meth(self) -> int:
return 0
def func(x: Proto) -> int:
return x.meth()
func(C()) # Passes static type check
See PEP 544 for details. Protocol classes decorated with @typing.runtime_checkable act as simple-minded runtime protocols that check only the presence of given attributes, ignoring their type signatures. Protocol classes can be generic, they are defined as::
class GenProto[T](Protocol):
def meth(self) -> T:
...
SceneEmbedProcessor(embedder: wuenlp_tools.utils.embedding.TextEmbedder)
SceneEmbedder =
PipelineStep('Scene Embedder', processor=SceneEmbedProcessor, provides=['scene_embeddings'], requires=['scenes'])
Pipeline step Scene Embedder (SceneEmbedProcessor).
Provides: scene_embeddings
scene_embeddings: Provides per-scene embeddings in additional features (e.g.text_embedding).
Requires: scenes
unit type UIMASystemScene; additional features text_embedding.