2011-09-20 18 views
11

मैं कुछ देशों और भाषाओं के हजारों समाचार लेखों के संग्रह से "इकाई नाम" निकालने के लिए एक पायथन लिपि लिख रहा हूं।उदाहरण पायथन स्क्रिप्ट जो डीबीपीडिया का उपयोग करती है?

मैं आश्चर्यजनक DBPedia संरचित knwoledge का उपयोग करना चाहता हूं, उदाहरण के लिए "मिस्र में कलाकार" और "कनाडा में कंपनियों" के नामों को देखने के लिए कहें।

मैं DBPedia सामग्री डाउनलोड करने और इसे ऑफ़लाइन उपयोग करना चाहते हों (यदि इन जानकारी एसक्यूएल रूप में था, मुझे कोई समस्या नहीं पड़ता था।)। ऐसा करने के लिए क्या आवश्यक है और इसे पाइथन से स्थानीय रूप से कैसे पूछना है?

उत्तर

14

डीबीपीडिया सामग्री आरडीएफ प्रारूप में है। डंप को here

डीबीपीडिया आरडीएफ में एक बड़ा डेटासेट है, जिसे Triple Store तकनीक का उपयोग करने के लिए आवश्यक डेटा को संभालने के लिए डाउनलोड किया जा सकता है। डीबीपीडिया के लिए आपको देशी ट्रिपल स्टोर्स में से एक की आवश्यकता होगी, मैं आपको Virtuoso या 4store का उपयोग करने की सलाह देता हूं। मैं व्यक्तिगत रूप से 4 स्टोर पसंद करता हूं।

एक बार जब आप अपने ट्रिपल स्टोर में डीबीपीडिया के साथ स्थापित हो जाते हैं। डीबीपीडिया आरडीएफ ट्रिपल से पूछने के लिए आप SPARQL का उपयोग कर सकते हैं। पाइथन पुस्तकालय हैं जो आपकी मदद कर सकते हैं। 4 स्टोर और वर्तुसोसो आपको जेएसओएन में वापस परिणाम दे सकते हैं ताकि आप बिना किसी पुस्तकालय के आसानी से प्राप्त कर सकें।

कुछ सरल 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 

SPARQL चलाने के लिए आप मदद कर सकते हैं ... उदाहरण

>>> 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" }} ] } } 
>>> 

मुझे आशा है कि यह आप कैसे शुरू करने के लिए की एक विचार देता है के लिए।

+0

Thx @msalvadores। यह DBPedia.org के साथ ठीक काम करता है। अभी भी इसे Win7 मशीन पर स्थानीय रूप से काम करने की आवश्यकता है। तो निश्चित रूप से Virtuoso (4store केवल linux)। लेकिन अभी भी विंडोज प्लेटफ़ॉर्म – jaz

+0

के लिए एक अच्छा इंस्टॉल ट्यूटोरियल नहीं मिला, वर्चुसो के लिए भी आप लिनक्स के साथ बेहतर होंगे। यदि आप Virtuoso के साथ रहना चाहते हैं तो इस पर एक http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VOSUsageWindows भी ध्यान रखें कि यदि आप सभी डीबीपीडिया को लोड करना चाहते हैं तो आपको एक सभ्य शक्तिशाली मशीन की आवश्यकता होगी शायद एक कमोडिटी सर्वर। –

+0

आपको वोट नहीं दे सकता क्योंकि मेरे पास अभी भी पर्याप्त प्रतिष्ठा नहीं है। लेकिन आपके उत्तर को सही के रूप में चुना! – jaz

1

python3 में जवाब इस अनुरोध लाइब्रेरी का उपयोग कर तरह दिखेगा:

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