2009-01-19 42 views
8

Khi nói đến phân loại âm nhạc theo thể loại, tôi đã tìm thấy wikipedia để có thông tin thể loại thú vị hơn hầu hết các nguồn dữ liệu khác.Truy xuất dữ liệu nghệ sĩ âm nhạc từ wikipedia?

Tôi dường như nhớ một cơ sở dữ liệu đã thu thập loại thông tin này từ Wikipedia và làm cho nó dễ truy cập hơn, nhưng tôi không thể google gì cả ngày hôm nay.

Nếu tôi cố truy xuất dữ liệu này, các tùy chọn của tôi là gì? Có bất cứ điều gì giống như những gì tôi mô tả hoặc tôi cần phải đi một màn hình cạo?

Trả lời

2

Tôi đã tìm thấy những gì tôi đã nghĩ đến khi đăng câu hỏi của mình. Infochimps lưu các bộ sưu tập của infobox từ Wikipedia, chẳng hạn như this one cho các nghệ sĩ âm nhạc. Nó không thực sự là những gì tôi muốn mặc dù bởi vì nó chỉ có sẵn như là một tải về.

Trong khi tôi đang tìm kiếm, tôi đã tìm cách truy cập các bài viết trong XML format với đánh dấu wiki chưa được cập nhật. Rõ ràng là nó dễ dàng hơn trên các máy chủ wikipedia nhưng tôi không chắc chắn về việc liệu nó sẽ dễ dàng hơn để phân tích cú pháp.

+0

liên kết không hoạt động – mtk

11

Bạn nên xem xét Freebase (xem, ví dụ: musical artists table). Nếu bạn chọn Wikipedia, thì có lẽ bạn nên tải xuống database dump.

Ví dụ so sánh danh sách thể loại Freebase và Wikipedia cho ban nhạc Radiohead:

  • Freebase: alternative rock, rock nghệ thuật, âm nhạc điện tử, progressive rock, electronica, và experimental rock.
  • Wikipedia: đá thay thế, đá điện tử và thử nghiệm.

Chỉnh sửa: Quan trọng hơn, tôi đã bao gồm ví dụ hoạt động bằng mjt, khung Javascript được thiết kế cho Freebase. Sao chép-dán tệp này vào một tệp, mở bằng trình duyệt của bạn, nhập tên nghệ sĩ và xem thể loại Freebase dành cho chúng.

Quan trọng hơn, tôi đã thay đổi các ví dụ của mình và mặc định thành Radiohead. =)

<html> 
<head> 
    <script type="text/javascript" src="http://mjtemplate.org/dist/mjt-0.6/mjt.js"></script> 
</head> 
<body onload="mjt.run()"> 
<pre mjt.script=""> 
var name = mjt.urlquery.name ? mjt.urlquery.name : 'Radiohead'; 
</pre> 
<div mjt.task="q"> 
mjt.freebase.MqlRead([{ 
    type: '/music/artist', 
    name: { 
    value:name, 
    lang:{name:{value:'English'}} 
    }, 
    genre: [{ 
    name: { 
     value:null, 
     lang:{name:{value:'English'}}} 
    }] 
}]) 
</div> 

<form method="get" action=""> 
<input type="text" name="name" value="$name" /> 
<input type="submit" value="search" /> 
</form> 

<table mjt.for="topic in q.result"> 
    <tr mjt.for="(var rowi = 0; rowi &lt; topic.genre.length; rowi++)"> 
    <td><pre mjt.script="">var gname = topic.genre[rowi].name;</pre>$gname.value</td> 
    </tr> 
</table> 
</body></html> 

Bạn có thể sử dụng ngôn ngữ khác, nhưng hy vọng bạn có thể dễ dàng dịch truy vấn trên.

+0

+1 cho cơ sở miễn phí, có lẽ là nguồn tốt nhất có, ngoài nhãn/nghệ sĩ. – UnkwnTech

+0

Freebase trông khá tốt. Tôi sẽ điều tra thêm. Cảm ơn! – Kenny

+0

Có những API được cho là tốt để tương tác với Freebase, có sẵn bằng hầu hết các ngôn ngữ?Thật không may, tôi đã từng chỉ tương tác qua mjt, một khung Javascript: http://stackoverflow.com/questions/33484/can-i-export-translations-of-place-names-from-freebase-com –

7

MusicBrainz (http://musicbrainz.org/) có thể là những gì bạn muốn, thay vì wikipedia. Đây là một dự án để tạo ra một bộ sưu tập siêu dữ liệu âm nhạc được cấp phép tự do, chất lượng cao (tên của nhà soạn nhạc, tựa đề album, tên bài hát, tên của trombonist trên bản nhạc đó, v.v.). Họ đã phát triển một cơ sở dữ liệu tuyệt vời, lược đồ cơ sở dữ liệu chi tiết, hướng dẫn phong cách toàn diện để tạo siêu dữ liệu chính xác và nhất quán, phần mềm ứng dụng có thể chèn siêu dữ liệu vào thẻ trong tệp dữ liệu âm nhạc và API mà bạn có thể sử dụng dữ liệu. Tất cả tự do có sẵn và được cộng tác chỉnh sửa.

Một vùng yếu của siêu dữ liệu MusicBrainz là thể loại âm nhạc. Điều này là do một vấn đề khó giải quyết của nó: "funk" của một người là "pop" của một người khác.

Các vấn đề liên quan