Я пытаюсь написать класс для манипулирования текстом. Идея в том, что класс будет поддерживать базовую предварительную обработку текста, но если кто-то хочет написать очень сложную функцию предварительной обработки, он должен иметь возможность использовать базовый класс и переопределить его. Я попробовал следующий способ, хотя я могу как-то заставить его работать, я не думаю, что это правильный способ сделать это.
class TextPreprocessor:
def __init__(self, corpus):
"""Text Preprocessor base class.
corpus: a list of sentences
"""
self.corpus = corpus
self.word_tokens = [self.preprocess(sentence) for sentence in corpus]
def preprocess(self,sentence):
"""
strip each sentence , lowercase it and split by space # sentence.strip().lower().split()
"""
return sentence.strip().lower().split()
def preprocess_transform(self,sentence):
return self.preprocess(sentence)
Теперь, если я хочу написать новую функцию предварительной обработки, которая является лучшим способом сделать это. Я попробовал следующее,
class SubPreprocess(TextPreprocessor):
def __init__(self, corpus):
#### dummy preprocess function
def preprocess(self, sentence):
return sentence.strip().split() + ['HELLOOOOOOOOOOLLLL']
super.__init__(corpus)
Это не работает. По сути, я хочу, чтобы функция предварительной обработки (модифицированная) могла иметь возможность переопределять функцию в базовом классе TextPreprocessor
, поэтому при вызове этой __init__
self.word_tokens
должна основываться на новой функции предварительной обработки