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