def extract(self, tokens: Sequence[str]) -> List[Dict[(str, float)]]:
    features = []
    for (i, _) in enumerate(tokens):
        current_feature = {}
        start = max(0, (i - self.window_size))
        end = (min((len(tokens) - 1), (i + self.window_size)) + 1)
        for j in range(start, end):
            relative_idx = (j - i)
            for feature_extractor in self.feature_extractors:
                feature_extractor.extract(tokens[j], i, relative_idx, tokens, current_feature)
        features.append(current_feature)
    return features
def extract(self, tokens: Sequence[str]) -> List[Dict[(str, float)]]:
    features = []
    for (i, _) in enumerate(tokens):
        current_feature = {}
        start = max(0, (i - self.window_size))
        end = (min((len(tokens) - 1), (i + self.window_size)) + 1)
        for j in range(start, end):
            relative_idx = (j - i)
            for feature_extractor in self.feature_extractors:
                feature_extractor.extract(tokens[j], i, relative_idx, tokens, current_feature)
        features.append(current_feature)
    return features