Pregunta Extracción de un subconjunto de datos de Freebase para una iteración de desarrollo más rápida


He descargado el volcado 250G de datos de base de datos. No quiero iterar mi desarrollo en Big Data. Quiero extraer un pequeño subconjunto de los datos (puede ser un dominio pequeño o unas 10 personalidades y su información). Este pequeño subconjunto hará que mis iteraciones sean más rápidas y fáciles.

¿Cuál es el mejor enfoque para particionar los datos de base de datos? ¿Hay alguna descarga de subconjuntos proporcionada por Google / Freebase?


10
2017-12-07 21:02


origen


Respuestas:


Esta es una respuesta que hemos recibido de muchas personas que usan los volcados de datos. Estamos buscando la mejor manera de crear tales subconjuntos. Un enfoque sería obtener todos los datos para un único dominio como Film.

Así es como obtendrías cada triple RDF del dominio / film:

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

La parte difícil es que este subconjunto no contendrá los nombres, imágenes o descripciones que probablemente también desee. Por lo tanto, tendrá que obtener los siguientes:

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

Entonces posiblemente desee filtrar ese subconjunto a solo los datos de tema sobre películas (haga coincidir solo tripletas que comiencen con la misma / m ID) y concatenarlas al subconjunto de películas.

Todo es bastante directo para escribir esto con expresiones regulares pero mucho más trabajo de lo que debería ser. Estamos trabajando en una mejor solución a largo plazo.


12
2017-12-08 00:35



Quería hacer algo similar y se me ocurrió la siguiente línea de comando.

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

Te dará todos los trillizos para todos los temas que tengan el tipo de película. (se supone que todos los temas vienen en orden ordenado)

Después de esto, simplemente puede grep para los predicados que necesita.


3
2018-05-04 21:34



Solo un comentario para la publicación aceptada, la variante para los temas no me funciona, porque si queremos usar regex necesitamos establecer el parámetro -E

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

2
2017-07-23 12:01