2011-09-20 33 views
11

Estoy escribiendo una secuencia de comandos python para extraer "nombres de entidades" de una colección de miles de artículos de noticias de algunos países e idiomas.Ejemplo de secuencia de comandos python que utiliza DBPedia?

Me gustaría hacer uso del increíble DBPedia conocimiento estructurado, por ejemplo, para buscar los nombres de "artistas en Egipto" y los nombres de "empresas en Canadá".

(Si esta información estaba en forma de SQL, que habría tenido ningún problema.)

yo preferiría para descargar el contenido DBPedia y usarlo sin conexión. ¿Alguna idea de lo que se necesita para hacerlo y cómo consultarla localmente desde python?

Respuesta

14

El contenido de DBpedia está en formato RDF. Los volcados se pueden descargar de here

Dbpedia es un gran conjunto de datos en RDF, para manejar esa cantidad de datos que necesita para usar la tecnología Triple Store. Para Dbpedia necesitarás una de las tiendas triples nativas, te recomiendo que uses Virtuoso o 4store. Yo personalmente prefiero 4store.

Una vez que haya configurado su tienda triple con Dbpedia. Puede usar SPARQL para consultar los triples RDb de Dbpedia. Hay bibliotecas de Python que pueden ayudarte con eso. 4store y Virtuoso pueden darte resultados en JSON para que puedas arreglárrtelas sin necesidad de bibliotecas.

una secuencia de comandos simple como urllib ...

def query(q,epr,f='application/json'): 
    try: 
     params = {'query': q} 
     params = urllib.urlencode(params) 
     opener = urllib2.build_opener(urllib2.HTTPHandler) 
     request = urllib2.Request(epr+'?'+params) 
     request.add_header('Accept', f) 
     request.get_method = lambda: 'GET' 
     url = opener.open(request) 
     return url.read() 
    except Exception, e: 
     traceback.print_exc(file=sys.stdout) 
     raise e 

puede ayudar a salir a correr SPARQL ... por ejemplo

>>> q1 = """ 
... select ?birthPlace where { 
... <http://dbpedia.org/resource/Claude_Monet> <http://dbpedia.org/property/birthPlace> ?birthPlace . 
... }""" 
>>> print query(q1,"http://dbpedia.org/sparql") 

{ "head": { "link": [], "vars": ["birthPlace"] }, 
    "results": { "distinct": false, "ordered": true, "bindings": [ 
    { "birthPlace": { "type": "literal", "xml:lang": "en", "value": "Paris, France" }} ] } } 
>>> 

Espero que esto te da una idea de cómo empezar.

+0

@msalvadores Thx. Esto funciona bien con DBPedia.org. Aún necesita hacer que funcione localmente en una máquina win7. Así que definitivamente Virtuoso (4store only linux). Pero aún no podía encontrar un buen tutorial de instalación para la plataforma de Windows – jaz

+0

. Incluso para Virtuoso, sería mejor que con Linux. En caso de que quiera seguir con Virtuoso, mire este http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VOSUsageWindows También tenga en cuenta que si desea cargar todo DBPEDIA, necesitará una máquina potente decente. , tal vez un servidor de productos básicos. –

+0

no puedo votar porque todavía no tengo suficiente reputación. ¡Pero seleccionó su respuesta como correcta! – jaz

1

En python3 la respuesta se verá así el uso de la biblioteca de solicitudes:

def query(q, epr, f='application/json'): 
    try: 
     params = {'query': q} 
     resp = requests.get(epr, params=params, headers={'Accept': f}) 
     return resp.text 
    except Exception as e: 
     print(e, file=sys.stdout) 
     raise 
Cuestiones relacionadas