Статьи

Сопоставление музыкальных жанров в Википедии / DBPedia с Gephi

Содержание этой статьи было первоначально написано Тони Херстом в блоге OUseful.Info.

Исходя из сопоставления того, как языки программирования влияют друг на друга Согласно Википедии , где я попытался обобщить подход, описанный в Визуализация связанных записей в Википедии Использование Gephi для захвата наборов данных в Википедии, связанных с объявленными влияниями между элементами в определенных предметных областях, вот еще один способ получение данных из Википедии / DBpedia, которые мы можем визуализировать как кварталы / карты сходства (после @danbri: все по-прежнему выглядит как график (но графики выглядят как карты) ).

В этом случае метод основан на идентификации элементов, связанных с несколькими различными значениями для одного и того же типа классификационного типа. Так, например, в мире музыки группа может быть связана с одним или несколькими музыкальными жанрами . Если конкретная группа связана с жанрами электронной музыки , Новая волна музыки и музыка Ambient , мы можем построить график, рисуя линию / ребро между узлами , представляющими каждый из этих музыкальных жанров. То есть, если мы позволим узлам представлять жанр, мы могли бы нарисовать ребра между двумя узлами, чтобы показать, что определенная полоса помечена как попадающая в каждый из этих двух жанров.

Так, например, вот набросок жанров, которые связаны, по крайней мере, с некоторыми из групп, которые также помечены как «Психоделические» в Википедии:

Следуя описанному здесь рецепту , я использовал этот Запрос в модуле импорта семантической сети Gephi, чтобы получить данные:

prefix gephi:<http://gephi.org/>
CONSTRUCT{
  ?genreA gephi:label ?genreAname .
  ?genreB gephi:label ?genreBname .
  ?genreA <http://ouseful.info/edge> ?genreB .
  ?genreB <http://ouseful.info/edge> ?genreA .
} WHERE {
?band <http://dbpedia.org/ontology/genre> <http://dbpedia.org/resource/Psychedelic>.
?band <http://dbpedia.org/property/background> "group_or_band"@en.
?band <http://dbpedia.org/ontology/genre> ?genreA.
?band <http://dbpedia.org/ontology/genre> ?genreB.
?genreA rdfs:label ?genreAname.
?genreB rdfs:label ?genreBname.
FILTER(?genreA != ?genreB && langMatches(lang(?genreAname), "en")  && langMatches(lang(?genreBname), "en"))
}

(Я придумал тип отношения, чтобы описать границу… 😉

Этот запрос ищет вещи , которые попадают в заявленный жанр, а затем проверяет , что они также являются group_or_band . Обратите внимание, что этот подход был открыт в режиме бездействия при просмотре свойств нескольких полос. Вместо
😕 Band <http://dbpedia.org/property/background> «group_or_band» @en.
Возможно, мне следовало использовать более строго семантически определенное отношение, например
😕 Band a> http://schema.org/MusicGroup>.
или
😕 группа <http://dbpedia.org/ontology/Band>.

ФИЛЬТР помогает нам отбирать метки имен на английском языке, а также создавать пары терминов разных жанров для каждой группы (опять же, может быть, есть лучший способ сделать это? Я все еще новичок SPARQL! Если вы знаете лучший способ чтобы сделать это, или более эффективный способ написания запроса, пожалуйста, дайте мне знать через комментарии.)

Достаточно легко генерировать карты с одинаковым фокусом вокруг других определенных жанров; следующий запрос, выполненный с использованием интерфейса DBpedia SNORQL, извлекает значения кандидатов:

SELECT DISTINCT ?genre WHERE {
  ?band <http://dbpedia.org/property/background> "group_or_band"@en.
  ?band <http://dbpedia.org/ontology/genre> ?genre.
} limit 50 offset 0

(Параметр смещения позволяет вам перемещаться между результатами; смещение 10 будет отображать результаты, начиная с 11-го (?) Результата.)

Этот запрос выполняет поиск элементов, которые объявлены как тип group_or_band, а затем извлекает жанры, связанные с каждой полосой.

Если вы сделаете глубокий вдох, то, надеюсь, вы увидите, как этот рецепт можно использовать для поиска похожих «сопутствующих атрибутов» вещей в DBpedia / Wikipeda, если вы сможете решить, как сузить поиск, чтобы найти их… (( Моя отправная точка состоит в том, чтобы просматривать страницы DPpedia, которые могут иметь свойства, которые меня интересуют. Так, например, при поиске хуков в данных, связанных с музыкой, у нас может быть пик на странице DBpedia для Hawkwind (которых нет, очевидно, из психоделического жанра…), а затем поищите вероятные отношения, чтобы попробовать в примере запроса SNORQL…)

PS Если вы воспользуетесь этим рецептом и придумали какие-нибудь интересные карты по отдельным частям DBpedia, пожалуйста, оставьте ссылку в комментариях ниже 🙂