Hierarchische Taxonomie von Genres


#1

Hierarchische Taxonomie von Genres

Mein Vorhaben, die Genre-Einträge zu strukturien hat mich bewogen intensiv im Web zu suchen. Unter "Musik Klassifikation" habe ich etliches gefunden, um mir ein eigenes Schema zu entwickeln. Es sollte nicht zu sparsam sein wie ID3v1-Tag, aber auch nicht uferlos und beliebig; außerdem noch erweiterungsfähig. Nach dem Lesen vieler Grundlagenartikel war für mich klar, dass die Struktur hierarchisch angelegt werden musste. Es ging mir zunächst nur um Rock, Pop und Jazz, so dass ich Klassik und Hörspiele (Audiobooks) erstmal ausgeblendet habe.

Hinweis: Zitate sind in Hochkomma (') gesetzt.

Die DIPLOMARBEIT "Automatische Klassifikation von Musikkünstlern basierend auf Web-Daten" www.cp.jku.at/research/papers/knees_thesis.pdf stellt fest: 'Genre-Taxonomien sind inkonsistent. Pachet und Cazaly haben anhand von drei öffentlich verfügbaren Genre-Taxonomien diesbezüglich Untersuchungen angestellt.' Und weiter. 'Anzahl und hierarchische Gliederung variieren stark: 430, 531 oder 719 Genres werden in 16, 5 oder 18 Meta-Genres zusammengefasst. Zur Bezeichnung der Genres wird kein einheitliches Vokabular verwendet: nur 70 Worte kommen in allen drei Taxonomien vor. Genres, die wie Rock“ oder Pop“ breite musikalische Spektren abdecken, sind unterschiedlich definiert.' Pachet und Cazaly scheinen Grundlagenwerke darzustellen ebenso wie George Tzanetakis und Perry Cook, da diese auch in anderen Diplomarbeiten genannt wurden. A Taxonomy of Musical Genres von Pachet und Cazaly citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.9.6729&rep... habe ich allerdings nicht gelesen. Andere Hinweise fand ich unter www.musikzimmer.ch/wordpress/archives/31:
'Genres sind vage Kategorisierungen ohne klare Grenzen. Folgende Dimensionen machen die Vagheit von Genreklassen mit aus:

  1. Genrebezeichnungen sind mehrdeutig...
  2. Genreklassen sind inkonsistent...
  3. Genre-Taxonomien sind hierarchisch...
  4. Klassifikationen von Genres sind teils taxonomisch, teils genealogisch...
  5. Genreklassifikationen sind sehr unterschiedlich...
  6. Es kommen neue Genres hinzu, was die Klassifikation schwierig macht...'
    Interessant auch http://www.musikzimmer.ch/pics/genrecharts...hart_totale.gif

Auf Seite 14 der o.g. Diplomarbeit wird erläutert, dass Tzanetakis, Essl und Cook zunächst nur 6 Genres (Klassische Musik, Country, Disco, Hip Hop, Jazz und Rock) klassifizierten und später um Blues, Reggae, Pop und Metal erweiterten. Die Genre enthalten jeweils Subkategorien.
Die Genre in der Matrix der Klassifikationsergebnisse in der Tabelle auf Seite 49 sind Country, Folk, Jazz, Blues, R’n’B/Soul, Heavy Metal, Alt/Indie, Punk, Rap/HipHop, Electronica, Reggae, Klassik, Rock’n’Roll und Pop.

Hilfreich war mir Wikipedia mit dem Portal http://de.wikipedia.org/wiki/Portal:Musik/...ungen_der_Musik, aber nicht so sehr mit http://en.wikipedia.org/wiki/List_of_music_styles. Wichtig sind noch http://www.musicline.de/de/genre/lexikon/, http://www.laut.de/genres/, http://www.lastfm.de/music/, http://www.radical-music.com/ usw.

Wichtig war mir ein Sammelsurium zu vermeiden, welches wie folgt aussehen könnte: audiobooks|blues|classic rock|classical|country|dance|electronica|folk|hip-hop|indie|jazz|kids|metal|pop|punk|reggae|rock|soul|trance|2 tone|a cappella|abstract hip-hop|acid|acid jazz|acid rock|acoustic|acoustic guitar|acoustic rock|adult alternative|adult contemporary|alternative|alternative country|alternative folk|...|western swing|world|world (entnommen aus Last.fm#Genre and Mood (Track Tags).src)

Sehr gefallen hat mir allmusic.com mit seinen nur 11 Meta-Genres, dessen Subgenres sehr umfangreich gegliedert sind:
Pop-Rock - http://www.allmusic.com/explore/genre/pop-rock-d20
Jazz - http://www.allmusic.com/explore/genre/jazz-d196
Rhythm-Blues - http://www.allmusic.com/explore/genre/rhythm-blues-d13334
Rap - http://www.allmusic.com/explore/genre/rap-d1
Country - http://www.allmusic.com/explore/genre/country-d27
Blues - http://www.allmusic.com/explore/genre/blues-d41
Electronic - http://www.allmusic.com/explore/genre/electronic-d11605
Latin - http://www.allmusic.com/explore/genre/latin-d4300
Reaggae - http://www.allmusic.com/explore/genre/reggae-d212
International - http://www.allmusic.com/explore/genre/international-d244
Classical - http://www.allmusic.com/explore/classical-genres

Meine eigene hierarchische Taxonomie von Genres habe ich jedoch an das Wiki-Portal "Musik-Stilrichtungen der Musik" angelehnt.
Ich beschänke mich auf 11 Genres
Rock, Punk, Metal, Pop, Latin, Afro, Electronica, Jazz, Gospel, Folk und other.
Diese sind fest und werden nicht erweitert. Alle 11 Genres haben Subgenres in 1 bis maximal 3 Ebenen. Subgenres werden bei Bedarf ergänzt. Mehrfachnennungen sind vorgeshen, beispielsweise Rock ~ Rockjazz || Jazz ~ Fusion.
Die Einrückungen der Tabelle http://www.baack.de/audio/Genre-Gruppen-Dateien/tabstrip.htm stellen die Hierarchie dar. Die Tabelle enthält von fast jedem Subgenre Links zu Wikipedia. Eine "normale" txt-Datei habe ich im Mp3tag-Editor eingelesen und die Standard-Genres deaktivert. Diese txt-Datei könnte ich anbieten.


Suche Inspiration für gute (neue) Musikdatenstruktur
MP3 Kollektion Struktur
iTunes und iPod: Hörbücher taggen
Web-Source-Script für Audible?
Genre - Mit welchem Web-Source-Script?
Feld Genre mit zu vielen Wörtern...
#2

Manfred, vielen Dank für den Artikel zur Taxonomie von Genres und diese deine Fleißarbeit!
So kompliziert oder vielleicht dadurch doch etwas einfacher kann ordentliche Ordnungsarbeit sein.

Die in Mp3tag angebotene Genre Standard Liste habe ich auch schon seit längerer Zeit deaktiviert.
Dein Ordnungsansatz ist interessant. Bitte her mit deiner 'genres.ini' Textdatei.

DD.20110821.0815.CEST


#3

Hallo Manfred,

Dein Thema 'Taxonomie von Genres' habe ich mit Interesse gelesen und würde mich auch sehr
über eine txt-Datei freuen.

Internette Grüsse
Mick


#4

+1


#5

Die Genres.ini-Textdatei ist eine "lineare" Form der strukturierten Tabelle . Jede Einrückung soll eine Hierarchiestufe darstellen. In der Genres.ini-Datei wird die neue Hierarchiestufe durch eine Tilde (~) eingeleitet. Alternativen trenne ich durch doppelte Senkrechtstriche (||) ab. Da hierdurch ziemliche Bandwürmer entstehen können, habe ich mir eine Beschränkung auferlegt:

  1. maximale Ebenen = 4
  2. maximale Alternativen = 3

Beispiel zu 1 (2Pac)
Afro ~ Hip Hop ~ Rap ~ Gangsta Rap
Beispiel zu 2 (Clapton, Eric & B.B. King)
Rock ~ Blues Rock ¦¦ Afro ~ Blues ¦¦ Rock ~ Classic Rock

Warum das Ganze? Ich werte mit Winamp diese Infos aus um gezielt Musik hören zu können. Im WinAmp läßt sich in der Medienbibliothek unter "lokale Medien" eine "eigene Ansicht erstellen". Die Möglichkeiten sind vielfältig,
z. B. Genre enthält Rap
oder Genre beginnt mit Rock
usw.


Nachtrag:
Die Antwort zur Frage "Muss ich für die nächste Hierarchiestufe eine neue Spalte anlegen?" lautet nein. Die Hierarchiestufen durch eine Tilde (~) getrennt. Genres.ini kennt ja keine Hierarchie, also muss dies "flach" abgebildet werden. Sozusagen alles in einer Zeile.


#6

Die Ini-Datei müßtest Du erhalten haben.

Mein Ordnungsansatz ist aber nicht der einzig mögliche. Wichtig ist mir, dass die unterschiedlichsten Genre nicht wahllos hintereinanderweg aufgelistet sind. Wer nach Jazz sucht, würde nur bei Jazz-Pop und Jazz-Rock fündig werden, nicht aber bei Crossover Jazz, Free Funk, Fusion oder Smooth Jazz. Deshalb ist die hierarchische Ausrichtung so wichtig. Es sollten nicht mehr als 15-20 Haupt-Genres sein, besser weniger. Die Zahl der Sub-Genres ist dann nicht mehr wichtig.

Eine Diskussion aber bleibt: Welche Genre bilden die Hauptgruppen?
Ich habe mich für folgende entschieden:
Rock, Punk, Metal, Pop, Latin, Afro, Electronica, Jazz, Gospel, Folk, other

Es ginge aber auch:
Pop/Rock, Jazz, R&B, Rap, Country, Blues, Electronic, Latin, Reggae, International, Classical
(von Allmusic.com). Mir war dieses aber zu "amerikanisch". Außerdem erschienen mir die Sub-Genres doch recht beliebig gewählt (es sind so an die 1000). Auch Rock und Pop zusammen als 1 Haupt-Genres schien mir nicht angebracht. Der Link1*) berücksichtigt die Hierarchie durch Einrückungen. Vielleicht liefere ich später noch eine grafische Gegenüberstellung nach.

Musicline.de hat sich beispielsweise auf 13 beschränkt:
Pop, Rock, Dance & Electronic, Black Music, HipHop, Alternative, Metal, Klassik, Volksmusik, World, Schlager, Comedy, Jazz, Andere

Radical-music.com bietet in der U-Musik 9 Haupt-Genres:
Pop, Afro, Rock, Punk, Jazz, Elektronisch, Country, Spirituell, Folk

Lastfm.de listet 25 Genres und arbeitet dan mit "Ähnlichkeiten":
acoustic, ambient, blues, classical, country, electronic, emo, folk, gothic, hardcore, hip hop, indie, industrial, jazz, metal, pop, punk rock, reggae, rnb, rock, soul, world, 60s, 70s, 80s, 90s

Laut.de verzichet auf eine hierarchische Ordnung und kennt lediglich 133 Genres.

PS.:
1*) Für Stimmungslagen (Moods) ließen sich sicherlich ähnliche Einordnungsmerkmale finden.


#7

Die Arbeit ist bombastisch, lässt kein Zweifel aufkommen, da fehlte noch was.

Auch ich würde mich glücklich schätzen diese txt-ini-datei mit einzubeziehen.

Net-Grüße an dich


#8

... habe ich abgeschickt. Einige Besonderheiten sind sicher nicht selbsterklärend - diese einfach löschen. Ansonsten ist die Ini-Datei streng nach den o.g. Regeln angelegt. Inzwischen habe ich die Genre-Strukturierung noch ein wenig weiter entwickelt. Mein Scanner funktioniert gerade nicht. Ich werde es aber in den nächsten Tagen nachholen. Eine neue Ini-Datei werde ich dazu aber in der nächsten Zeit nicht anfertigen.


#9

Ein spannendes und schwieriges Thema! Toll, dass Du Deinen Ansatz hier teilen möchtest! Wie taggst Du diese Genres und Subgenres? Multivalue im Genre-Feld oder legst Du neue Felder an?


#10

Das wäre naheliegend. Habe ich aber alles nicht gemacht, weil viele Player andere Felder als Genre nicht unterstützen würden. Ich möchte weiterhin z.B. in WinAmp eigene "Filter" anlegen können, z.B. Funk AND Soul. Deshalb bin darauf angewiesen es bei den Standardfelder zu belassen. Stattdessen benutze ich eine strenge Notation für das Feld Genre, wobei die Hierarchie durch die Tilde (~) und die Alternative durch Doppelstrich (||) dargestellt wird.

Beispiel:
Rock
Rock ~ Deutschrock
Rock ~ Folk Rock
Rock ~ Fusion, Jazz Rock
Rock ~ Gothic
Rock ~ Dark Rock
Rock ~ Death Rock
Rock ~ Hard Rock
Rock ~ Industrial
Rock ~ Progressive Rock
Rock ~ Psychedelic Rock
Rock ~ Rock'n'Roll
Rock ~ Rock'n'Roll ~ Rockabilly

Eine Alternative könnte so aussehen:
Afro ~ Funk ~ Jazzfunk || Jazz ~ Fusion, Rockjazz ~ Jazzfunk
oder so:
Rock ~ Progressive Rock || Rock ~ Psychedelic Rock

Durch diese strenge Notation bewahre ich mir die Möglichkeit, neue Felder für Hauptgenre, Subgenre, Altenativen usw. nach Bedarf zu erzeugen falls das für spätere organisatorische Maßnahmen sinnvoll erscheint.

Inzwischen bin ich dabei durch Analyse der vielen Subgenre die Anzahl der Hauptgenre weiter zu verdichten. Weniger ist mehr. :rolleyes:


#11

Wie flexibel kannst Du damit filtern? Zum Beispiel "alle Jazzfunk-Stücke, aber kein Afro".

Ich nutze übrigens drei Felder: SUPERGENRE, GENRE und STYLE. Die beiden letztgenannten als Multivalue-Felder. Ansonsten ist mein Ansatz ähnlich: wenige grobe Kategorien (Blues/Jazz, Pop/Rock, Electronic, ...), eine halbwegs übersichtliche Genre-Liste und beliebige Styles dazu.


#12

Das ist naheliegend. Nach ID3v2.3 wäre SUPERGENRE ein benutzerdefiniertes Feld, welches Weder Winamp, iTunes oder Mediamonkey (und Foobar???) anzeigen könnte. STYLE wurde irgendwann aus ID3v2.3 herausgenommen. [erbitte Korrektur, falls fehlerhaft] Welche Player werten diese Feld aus? Übrigens: Meine Genre.ini-Datei bezieht sich nur auf die von mir oben genannten 11 Genres, wobei "others" schon eine Verlegenheit darstellt. In der Gegenüberstellung würde ich somit "Classical" somit "_others ~ Classicals" zuordnen. Auch "Audiobook" wurde nicht einbezogen. Wie gesagt: Weil ich die Genre-Diskussion auf die sogenannte U-Musik beschränken wollte, habe ich Audiobook und Classical weggelassen. Tatsächlich findet bei mir auf Platte eine "Vorselektierung" statt in folgenden 3 Gruppen (Kürzel vorweg):
Kla - Klassik
Hör - Hörbücher/Hörspiele/Sprache
RPJ - U-Musik (Rock-Pop-Jazz u.ä.).
Das steht in CONTENTGROUP. Dieses Feld kann WinAmp auch auswerten. Diese vorselektierten CONTENTGROUPs haben eigene Haupt-Genre und Subgenre. Hier würde es mir zu weit führen, dies auch noch ausfühlich zu beschreiben. Zurück zum eigentlichen Thema: Hierarchiesche Genre-Taxonomie in der U-Musik!

Es sollte für mich mehr als eine Stichwortsammlung sein. Alle Genrebezeichnungen die z.B. mit M anfangen, haben trotzdem keine inhaltlichen Gemeinsamkeiten: Metal - Marschmusik - Musical. Zwischen Pop-Soul, Afro-Soul und Gospel-Soul aber schon. Diese haben verschiedene Haupt-Genres aber gleiche Subgenres. Damit ist klargestellt, dass es immer Überlappungen geben wird. Eine eindeutige Zuordnung ist nicht möglich, jedenfalls nicht immer! Deshalb auch meine Alternativdarstellung mit || (siehe oben in den Beiträgen). Trotzdem: Eine geringere Anzahl von Hauptgenres bringt mehr Struktur. Ich arbeite daran.

Neben dieser "analytischen" Genre-Einteilung käme noch eine "empirische" Genre-Einteilung á la Lastfm in Frage. Wenn, dann aber nur zusätzlich. Doch nun endgültig zurück zum pragmatischen GENRE-Feld:

Die Winamp-Medienbibliothek läßt es zu unter "Lokale Medien" eine eigene Ansicht zu erstellen. Ich nenne es Filtern.

Das Basisformat ist:
[Wert] [ [Wert] [...]]

Feldnamen:

  • GENRE: Genre
  • YEAR: Jahr
  • COMMENT: Kommentar
  • COMPOSER: Komponist
  • PUBLISHER: Herausgeber oder Plattenfirma
  • CATEGORY: Kategorie
    ...
    Vergleich:
  • =, >, < usw.
  • HAS: String enthält Wert
  • NOTHAS: String enthält Wert nicht
  • LIKE: String ist vergelichbar mit Wert ("the" und Leerzeichen werden ignoriert)
  • BEGINS: String beginnt mit Wert
    ...
    Logische Operatoren:
  • AND: Boolean UND
  • OR: Boolean ODER
  • NOT: Boolean NICHT
    Beispiel: Vor kurzem hinzugefügte Einträge, die noch nicht abgespielt wurden sind:
  • lastupd >= [yesterday] & playcount > 0

Bei "genre HAS funk OR soul" würde gefunden werden:
Rock ~ Crossover ~ Funk Rock
Metal ~ Funk Metal
Afro ~ Funk
Afro ~ Funk ~ P-Funk
Afro ~ Funk ~ Jazzfunk
Afro ~ Funk ~ Electro Funk
Afro ~ Funk ~ Funk Rock
Afro ~ Hip Hop ~ G-Funk
Afro ~ Hip Hop ~ Electro Funk
Afro ~ Hip Hop ~ Electro Funk ~ Electro
Afro ~ Hip Hop ~ Electro Funk ~ Miami Bass
Afro ~ Hip Hop ~ Rio Funk
Electronica ~ Breakbeat ~ Drum'n'Bass ~ Liquid Funk
Jazz ~ Fusion, Rockjazz ~ Jazzfunk
Pop ~ Soul
Pop ~ Soul ~ Phillysound
Pop ~ Soul ~ Blue Eyed Soul
Pop ~ Soul ~ Detroit Soul Motown Soul
Pop ~ Soul ~ Deutscher Soul
Pop ~ Soul ~ Memphis Soul
Pop ~ Soul ~ Modern Soul
Pop ~ Soul ~ Neo Soul
Pop ~ Soul ~ Rhythm and Blues
Pop ~ Soul ~ Southern Soul
Pop ~ Soul ~ Uptown Soul
Pop ~ Soul ~ Brit Soul
Afro ~ Soul
Afro-Latin ~ Latin Soul
Jazz ~ Modern Jazz ~ Hard Bop ~ Soul Jazz
Gospel ~ Soul

Bei "genre HAS funk AND NOTHAS afro" würde gefunden werden:
Rock ~ Crossover ~ Funk Rock
Metal ~ Funk Metal
Electronica ~ Breakbeat ~ Drum'n'Bass ~ Liquid Funk
Jazz ~ Fusion, Rockjazz ~ Jazzfunk

und bei "genre HAS jazzfunk AND NOTHAS afro" würde nur gefunden werden:
Jazz ~ Fusion, Rockjazz ~ Jazzfunk
... nicht aber Afro ~ Funk ~ Jazzfunk || Jazz ~ Fusion, Rockjazz ~ Jazzfunk


#13

Ich nutze Foobar2000 und habe hauptsächlich FLAC, also Vorbis-Comment.


#14

Ich habe meine Verzeichnisstruktur bzw. Ordnerhierarchie leicht umorganisiert und neu beschrieben. Dazu folgendes Screenshot von der html-Datei.


#15

@mbaa3

Könnte ich bitte die genre.ini Textdatei auch bekommen, die Genregeschichte macht mich noch irrsinnig.
Vielleicht kannst du sie gleich als Anhang hier im Forum mitschicken.
Vielen Dank !

Ciao
Friedl


#16

Hochladen fehlgeschlagen. Dir ist es nicht gestattet, eine Datei dieses Dateitypes hochzuladen


#17

Pack sie in einen zip Ordner oder benenn sie in .txt um.


#18

Jetzt als txt-Datei.

genres.ini.txt (11.6 KB)


#19

Danke !


#20

Hallo Manfred,
faszinierend gut durchdacht! Kompliment!
Da ich noch Anfänger bin: Wie binde ich die txt-Datei in MP3tag ein?
Danke für Deine Hilfe!
ant-eater