def __calculate_keyword_scores(keyword_candidates, word_scores): keyword_scores = {} for keyword_candidate in keyword_candidates: if keyword_candidate in keyword_scores: continue words = utils.separate_words(keyword_candidate) keyword_score = 0 for word in words: keyword_score += word_scores[word] keyword_scores[keyword_candidate] = keyword_score return keyword_scores
def __calculate_word_scores(keywords_candidate): words_degree = {} words_frequency = {} for candidate_keyword in keywords_candidate: candidate_words = utils.separate_words(candidate_keyword) candidate_words_len = len(candidate_words) candidate_degree = candidate_words_len - 1 for word in candidate_words: words_frequency.setdefault(word, 0) words_frequency[word] += 1 words_degree.setdefault(word, 0) words_degree[word] += candidate_degree word_scores = {} for word in words_frequency: word_frequency = words_frequency[word] word_degree = word_frequency + words_degree[word] word_scores[word] = word_degree / (word_frequency * 1.0) return word_scores