2013-12-07 4 views
10

Ich habe den 250G Dump von Freebase Daten heruntergeladen. Ich möchte meine Entwicklung nicht auf die Big Data übertragen. Ich möchte eine kleine Teilmenge der Daten extrahieren (kann eine kleine Domäne oder einige 10 Persönlichkeiten und ihre Informationen sein). Diese kleine Teilmenge wird meine Iterationen schneller und einfacher machen.Eine Teilmenge Daten von Freebase für schnellere Entwicklungsiteration extrahieren

Was ist der beste Ansatz zum Partitionieren der Freebase-Daten? Gibt es einen von Google/Freebase bereitgestellten Teilmengen-Download?

Antwort

12

Dies ist eine Rückmeldung, die wir von vielen Leuten bekommen haben, die die Daten-Dumps benutzen. Wir untersuchen, wie diese Teilmengen am besten erstellt werden können. Ein Ansatz wäre, alle Daten für eine einzelne Domäne wie Film zu erhalten.

Hier ist, wie Sie aus der Verzeichnis/Film Domain jedes RDF triple bekommen:

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

Der schwierige Teil ist, dass diese Teilmenge nicht die Namen, Bilder oder Beschreibungen enthält, die Sie wahrscheinlich auch wollen. So müssen Sie diejenigen, die wie diese zu bekommen:

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

Dann werden Sie vielleicht wünschen, dass die Teilmenge auf nur Thema Daten über Filme filtern (Match nur verdreifacht, dass mit der gleichen/m ID Start) und verketten das zu der Filmuntergruppe.

Es ist alles ziemlich einfach, dies mit regulären Ausdrücken zu schreiben, aber viel mehr Arbeit, als es sein sollte. Wir arbeiten an einer besseren langfristigen Lösung.

+2

festlegen müssen Obwohl Sie mit ziemlicher Sicherheit wollen/common/Thema Aliase, etc und/type/object für name, es gibt viel mehr, was Sie wahrscheinlich auch wollen. Wenn Sie sich für die Film-Domain interessieren, möchten Sie wahrscheinlich auch Schauspieler, Ehepartner, Geburtsdaten, Nationalitäten usw., also werden Sie einige der Eigenschaften von dem eingeschlossenen Typ/Personen/Person wollen. Grundsätzlich ist wahrscheinlich alles, was ein eingeschlossener Typ von einem der Zieltypen ist, von potentiellem Interesse. –

+0

zgrep $ '\ tns/Film.' freebase-rdf-2013-12-01-00-00.gz ergab null Zeilen. Fehle ich etwas? –

+0

Hoppla, Copypasta Fehler an meinem Ende. Ich habe die Beispiele aktualisiert. Bitte versuchen Sie es noch einmal. –

3

Ich wollte eine ähnliche Sache machen und ich kam mit der folgenden Befehlszeile.

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 

Es gibt Ihnen alle Triolen für alle Fächer, die den Typ Film hat. (es wird davon ausgegangen, dass alle Themen in sortierter Reihenfolge kommen)

Danach können Sie einfach für die Prädikate grep, die Sie benötigen.

2

Nur eine Bemerkung für akzeptierte Post, Variante für Themen für mich nicht funktionieren, denn wenn wir regex wollen verwenden wir -E-Parameter

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