Извлечение данных подмножества Freebase для ускорения разработки - программирование
Подтвердить что ты не робот

Извлечение данных подмножества Freebase для ускорения разработки

Я загрузил дамп 250G свободных данных. Я не хочу повторять свое развитие на больших данных. Я хочу извлечь небольшое подмножество данных (может быть небольшой домен или около 10 персонажей и их информация). Это небольшое подмножество сделает мои итерации более быстрыми и легкими.

Какой лучший подход для разделения данных на основе freebase? Есть ли какая-либо загрузка поднабора, предоставляемая Google/Freebase?

4b9b3361

Ответ 1

Это обратная связь, которую мы получили от многих людей, использующих дампы данных. Мы изучаем, как лучше всего создавать такие подмножества. Один из подходов заключался бы в том, чтобы получить все данные для одного домена, такого как Film.

Здесь вы можете получить каждую тройку RDF из домена /film:

zgrep '\s<http://rdf\.freebase\.com/ns/film.' freebase-rdf-{date}.gz | gzip > freebase-films.gz

Сложная часть состоит в том, что это подмножество не будет содержать имен, изображений или описаний, которые вы, скорее всего, тоже захотите. Таким образом, вам нужно получить следующее:

zgrep '\s<http://rdf\.freebase\.com/ns/(type\.object|common\.topic)' freebase-rdf-{date}.gz | gzip > freebase-topics.gz

Затем вы можете захотеть отфильтровать это подмножество только по темам данных о фильмах (совпадайте только с тройками, начинающимися с того же ID/m) и соедините это с подмножеством фильма.

Все это довольно прямолинейно в script с регулярными выражениями, но намного больше работы, чем должно быть. Мы работаем над лучшим долгосрочным решением.

Ответ 2

Я хотел сделать аналогичную вещь, и я придумал следующую командную строку.

gunzip -c freebase-rdf-{date}.gz | awk 'BEGIN { prev_1 = ""} { if (prev_1 != $1) { print '\n' } print $0; prev_1 = $1};' | awk 'BEGIN { RS=""} $0 ~ /type\.object\.type.*\/film\.film>/' > freebase-films.txt

Это даст вам все триплеты для всех предметов, у которых есть фильм типа. (предполагается, что все предметы входят в отсортированный порядок)

После этого вы можете просто grep для предикатов, которые вам нужны.

Ответ 3

Только одно замечание для принятого сообщения, вариант для тем не работает для меня, потому что, если мы хотим использовать регулярное выражение, нам нужно установить параметр -E

zgrep -E '\s<http://rdf\.freebase\.com/ns/(type\.object|common\.topic)' freebase-rdf-{date}.gz | gzip > freebase-topics.gz