Сократите беспорядочные слова в семя слов

Например, спортируйте жанры песен API:

['alternative rock', 'comic', 'funk rock', 'garage rock', 'indie rock', 'pop rock', 'post-grunge', 'rock']   

['g funk', 'gangster rap', 'hip hop', 'pop rap', 'rap', 'west coast rap']   

['canadian pop', 'dance pop', 'pop', 'pop christmas']      

Три списка представляют три жанра песни. Но такие жанры выглядят довольно грязно, и я легко могу "извлечь" "семя жанра", то есть три песни

rock
rap
pop

соответственно

Как я могу свести такие грязные слова в семя слов? Спасибо

1 ответ

Решение

Что ж, если у вас есть список семян, мы могли бы, например, подсчитать количество каждого семени в жанре и вернуть тот, у которого максимальный вес. Допустим, что начальный список называется "семя", а список жанров - "жанр". Мы должны перепроверить все комбинации семян и жанра и добавить вес к некоторой структуре.

def max_seed_return (seeds, genres):
    # appending weigths to dictionary
    weights= {seed:0 for seed in seeds}
    for genre in genres:
        for seed in seeds:
            if seed in genre:
            weights[seed]+=1
    max_weight, result = 0, None
    # getting result genre with biggest weigth
    for seed, seed_weight in weights.items:
        if seed_weight>max_weight:
            max_weight=seed_weight
            result=seed
    #returns it or None if no seeds is found in genres
    return result
Другие вопросы по тегам