Rekomendasi Microsoft News
Microsoft News Dataset (MIND) adalah himpunan data skala besar untuk penelitian rekomendasi berita. MIND dikumpulkan dari log perilaku anonim dari situs web Microsoft News. Misi MIND adalah menjadi tolok ukur himpunan data untuk rekomendasi berita dan memfasilitasi penelitian dalam rekomendasi berita dan area sistem pemberi rekomendasi.
MIND berisi sekitar 160 ribu artikel berita Bahasa Inggris dan lebih dari 15 juta log tayangan yang dihasilkan oleh 1 juta pengguna. Setiap artikel berita berisi konten tekstual yang kaya termasuk judul, abstrak, tubuh, kategori, dan entitas. Setiap log tayangan berisi peristiwa klik, peristiwa nonklik, dan perilaku klik berita historis pengguna ini sebelum tayangan ini. Untuk melindungi privasi pengguna, setiap pengguna diputuskan tautannya dari sistem produksi ketika di-hash dengan aman ke dalam ID anonim. Untuk informasi lebih rinci tentang himpunan data MIND, Anda dapat merujuk ke artikel MIND: A Large-scale Dataset for News Recommendation.
Volume
Baik data pelatihan dan validasi adalah folder zip, yang berisi empat file berbeda:
NAMA FILE | DESKRIPSI |
---|---|
behaviors.tsv | Riwayat klik dan log tayangan pengguna |
news.tsv | Informasi artikel berita |
entity_embedding.vec | Penyematan entitas dalam berita yang diekstrak dari grafik pengetahuan |
relation_embedding.vec | Penyematan hubungan antarentitas yang diekstrak dari grafik pengetahuan |
behaviors.tsv
File behaviors.tsv berisi log tayangan dan riwayat klik berita pengguna. File ini memiliki lima kolom dibagi dengan simbol tab:
- ID Tayangan. ID tayangan.
- ID pengguna. ID anonim pengguna.
- Waktu. Waktu tayangan dengan format “MM/DD/YYYY HH:MM:SS AM/PM”.
- Riwayat. Riwayat klik berita (daftar ID berita yang diklik) pengguna ini sebelum tayangan ini.
- Tayangan. Daftar berita yang ditampilkan dalam tayangan ini dan perilaku klik pengguna pada tayangan tersebut (1 untuk klik dan 0 untuk nonklik).
Contoh ditunjukkan dalam tabel di bawah ini:
KOLOM | KONTEN |
---|---|
ID tayangan | 123 |
Id Pengguna | U131 |
Waktu | 13/11/2019 Pukul 8.36.57 |
Riwayat | N11 N21 N103 |
Tayangan | N4-1 N34-1 N156-0 N207-0 N198-0 |
news.tsv
File news.tsv berisi informasi rinci artikel berita yang terlibat dalam file behaviors.tsv. File ini memiliki tujuh kolom, yang dibagi dengan simbol tab:
- ID Berita
- Kategori
- Subkategori
- Judul
- Abstrak
- URL
- Entitas Judul (entitas yang terkandung dalam judul berita ini)
- Entitas Abstrak (entitas yang terkandung dalam abstrak berita ini)
Tubuh konten lengkap artikel berita MSN tidak tersedia untuk diunduh, dikarenakan struktur lisensi. Namun, untuk kenyamanan Anda, kami telah menyediakan skrip utilitas untuk membantu mengurai halaman web berita dari URL MSN di himpunan data. Dikarenakan pembatasan waktu, beberapa URL kedaluwarsa dan tidak dapat diakses dengan. Saat ini, kami berusaha sebaik mungkin untuk menyelesaikan masalah ini.
Contoh ditunjukkan dalam tabel berikut:
KOLOM | KONTEN |
---|---|
ID Berita | N37378 |
Kategori | olahraga |
SubKategori | golf |
Judul | Pemenang PGA Tour |
Abstrak | Galeri pemenang terbaru di PGA Tour. |
URL | https://www.msn.com/en-us/sports/golf/pga-tour-winners/ss-AAjnQjj?ocid=chopendata |
Entitas Judul | [{“Label”: “PGA Tour”, “Type”: “O”, “WikidataId”: “Q910409”, “Confidence”: 1.0, “OccurrenceOffsets”: [0], “SurfaceForms”: [“PGA Tour”]}] |
Entitas Abstrak | [{“Label”: “PGA Tour”, “Type”: “O”, “WikidataId”: “Q910409”, “Confidence”: 1.0, “OccurrenceOffsets”: [35], “SurfaceForms”: [“PGA Tour”]}] |
Deskripsi kunci kamus di kolom “Entitas” dicantumkan sebagai berikut:
KUNCI | DESKRIPSI |
---|---|
Label | Nama entitas di grafik pengetahuan Wikidata |
Jenis | Jenis entitas ini di Wikidata |
WikidataId | ID entitas di Wikidata |
Keyakinan | Keyakinan penautan entitas |
OccurrenceOffsets | Offset entitas tingkat karakter dalam teks judul atau abstrak |
SurfaceForms | Nama entitas mentah dalam teks asli |
entity_embedding.vec & relation_embedding.vec
File entity_embedding.vec dan relation_embedding.vec berisi penyematan 100 dimensi entitas dan hubungan yang dipelajari dari subgraf (dari grafik pengetahuan WikiData) dengan metode TransE. Di kedua file, kolom pertama adalah ID entitas/hubungan, dan kolom lainnya adalah nilai vektor penyematan. Kami harap data ini dapat memfasilitasi penelitian rekomendasi berita yang sadar pengetahuan. Contoh ditunjukkan di bawah ini.
ID | MENYEMATKAN NILAI |
---|---|
Q42306013 | 0,014516 -0,106958 0,024590 … -0,080382 |
Karena beberapa alasan dalam mempelajari penyematan dari subgraf, beberapa entitas mungkin tidak memiliki penyematan dalam file entity_embedding.vec.
Lokasi penyimpanan
Data disimpan dalam blob di pusat data US Barat/Timur, dalam kontainer blob berikut: 'https://mind201910small.blob.core.windows.net/release/'.
Di dalam kontainer, set pelatihan dan validasi dikompresi ke dalam MINDlarge_train.zip dan MINDlarge_dev.zip.
Informasi Tambahan
Himpunan data MIND dapat diunduh gratis untuk tujuan penelitian berdasarkan Ketentuan Lisensi Penelitian Microsoft. Hubungi mind@microsoft.com jika Anda memiliki pertanyaan tentang himpunan data.
Akses data
Azure Notebooks
Buku catatan demo untuk mengakses data MIND di Azure
Buku catatan ini menyediakan contoh mengakses data MIND dari penyimpanan blob di Azure.
Data MIND disimpan di pusat data AS Barat/Timur, sehingga buku catatan ini akan berjalan dengan lebih efisien pada komputasi Azure yang terletak di AS Barat/Timur.
Impor dan lingkungan
import os
import tempfile
import shutil
import urllib
import zipfile
import pandas as pd
# Temporary folder for data we need during execution of this notebook (we'll clean up
# at the end, we promise)
temp_dir = os.path.join(tempfile.gettempdir(), 'mind')
os.makedirs(temp_dir, exist_ok=True)
# The dataset is split into training and validation set, each with a large and small version.
# The format of the four files are the same.
# For demonstration purpose, we will use small version validation set only.
base_url = 'https://mind201910small.blob.core.windows.net/release'
training_small_url = f'{base_url}/MINDsmall_train.zip'
validation_small_url = f'{base_url}/MINDsmall_dev.zip'
training_large_url = f'{base_url}/MINDlarge_train.zip'
validation_large_url = f'{base_url}/MINDlarge_dev.zip'
Fungsi
def download_url(url,
destination_filename=None,
progress_updater=None,
force_download=False,
verbose=True):
"""
Download a URL to a temporary file
"""
if not verbose:
progress_updater = None
# This is not intended to guarantee uniqueness, we just know it happens to guarantee
# uniqueness for this application.
if destination_filename is None:
url_as_filename = url.replace('://', '_').replace('/', '_')
destination_filename = \
os.path.join(temp_dir,url_as_filename)
if (not force_download) and (os.path.isfile(destination_filename)):
if verbose:
print('Bypassing download of already-downloaded file {}'.format(
os.path.basename(url)))
return destination_filename
if verbose:
print('Downloading file {} to {}'.format(os.path.basename(url),
destination_filename),
end='')
urllib.request.urlretrieve(url, destination_filename, progress_updater)
assert (os.path.isfile(destination_filename))
nBytes = os.path.getsize(destination_filename)
if verbose:
print('...done, {} bytes.'.format(nBytes))
return destination_filename
Unduh dan ekstrak file
# For demonstration purpose, we will use small version validation set only.
# This file is about 30MB.
zip_path = download_url(validation_small_url, verbose=True)
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
zip_ref.extractall(temp_dir)
os.listdir(temp_dir)
Baca file dengan pandas
# The behaviors.tsv file contains the impression logs and users' news click histories.
# It has 5 columns divided by the tab symbol:
# - Impression ID. The ID of an impression.
# - User ID. The anonymous ID of a user.
# - Time. The impression time with format "MM/DD/YYYY HH:MM:SS AM/PM".
# - History. The news click history (ID list of clicked news) of this user before this impression.
# - Impressions. List of news displayed in this impression and user's click behaviors on them (1 for click and 0 for non-click).
behaviors_path = os.path.join(temp_dir, 'behaviors.tsv')
pd.read_table(
behaviors_path,
header=None,
names=['impression_id', 'user_id', 'time', 'history', 'impressions'])
# The news.tsv file contains the detailed information of news articles involved in the behaviors.tsv file.
# It has 7 columns, which are divided by the tab symbol:
# - News ID
# - Category
# - Subcategory
# - Title
# - Abstract
# - URL
# - Title Entities (entities contained in the title of this news)
# - Abstract Entities (entities contained in the abstract of this news)
news_path = os.path.join(temp_dir, 'news.tsv')
pd.read_table(news_path,
header=None,
names=[
'id', 'category', 'subcategory', 'title', 'abstract', 'url',
'title_entities', 'abstract_entities'
])
# The entity_embedding.vec file contains the 100-dimensional embeddings
# of the entities learned from the subgraph by TransE method.
# The first column is the ID of entity, and the other columns are the embedding vector values.
entity_embedding_path = os.path.join(temp_dir, 'entity_embedding.vec')
entity_embedding = pd.read_table(entity_embedding_path, header=None)
entity_embedding['vector'] = entity_embedding.iloc[:, 1:101].values.tolist()
entity_embedding = entity_embedding[[0,
'vector']].rename(columns={0: "entity"})
entity_embedding
# The relation_embedding.vec file contains the 100-dimensional embeddings
# of the relations learned from the subgraph by TransE method.
# The first column is the ID of relation, and the other columns are the embedding vector values.
relation_embedding_path = os.path.join(temp_dir, 'relation_embedding.vec')
relation_embedding = pd.read_table(relation_embedding_path, header=None)
relation_embedding['vector'] = relation_embedding.iloc[:,
1:101].values.tolist()
relation_embedding = relation_embedding[[0, 'vector'
]].rename(columns={0: "relation"})
relation_embedding
Bersihkan file sementara
shutil.rmtree(temp_dir)
Contoh
Lihat contoh berikut tentang cara menggunakan himpunan data Pemberi Rekomendasi Microsoft News:
- Tantangan Rekomendasi Berita MIND
- Repositori Microsoft Recommenders
- MIND: Himpunan Data Microsoft News
Langkah berikutnya
Lihat beberapa model rekomendasi berita garis besar yang dikembangkan di MIND dari Repositori Microsoft Recommenders
Lihat himpunan data lainnya di katalog Open Datasets.