public function prepareModel()
{
$data = $this->applyTransform(new Transform\TokenPreparation($this->tokenizer, $this->documentNormalizer, $this->tokenNormalizer), $this->dataSource->getData());
$tokenCountByDocument = $this->applyTransform(new Transform\TokenCountByDocument(), $data);
$documentCount = $this->applyTransform(new Transform\DocumentCount(), $data);
unset($data);
$tokenAppearanceCount = $this->applyTransform(new Transform\TokenAppearanceCount(), $tokenCountByDocument);
$tokensByCateory = $this->applyTransform(new Transform\TokensByCategory(), $tokenCountByDocument);
$tfidf = $this->applyTransform(new Transform\TFIDF(), $tokenCountByDocument, $documentCount, $tokenAppearanceCount);
unset($tokenCountByDocument);
unset($tokenAppearanceCount);
$documentLength = $this->applyTransform(new Transform\DocumentLength(), $tfidf);
unset($tfidf);
$documentTokenCounts = $this->applyTransform(new Transform\DocumentTokenCounts(), $documentLength);
$complement = $this->applyTransform(new Transform\Complement(), $documentLength, $tokensByCateory, $documentCount, $documentTokenCounts);
unset($documentLength, $tokensByCateory, $documentCount, $documentTokenCounts);
$this->model->setModel($this->applyTransform(new Transform\Weight(), $complement));
$this->model->setPrepared(true);
}