<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def get_scores(self, *args):
		'''
		In this case, args aren't used, since this information is taken
		directly from the corpus categories.

		Returns
		-------
		np.array, scores
		'''
		if self.tdf_ is None:
			raise Exception("Use set_category_name('category name', ['not category name', ...]) " +
			                "to set the category of interest")

		avgdl = self.tdf_.sum(axis=0).mean()

		def idf(cat):
			# Number of categories with term
			n_q = (self.tdf_ > 0).astype(int).max(axis=1).sum()
			N = len(self.tdf_)
			return (N - n_q + 0.5) / (n_q + 0.5)

		def length_adjusted_tf(cat):
			tf = self.tdf_[cat]
			dl = self.tdf_[cat].sum()
			return ((tf * (self.k1 + 1))
			        / (tf + self.k1 * (1 - self.b + self.b * (dl / avgdl))))

		def bm25_score(cat):
			return - length_adjusted_tf(cat) * np.log(idf(cat))

		scores = bm25_score('cat') - bm25_score('ncat')
		return scores