विक्षनरी शब्द सामग्री कैसे प्राप्त करें?


89

एक शब्द मौजूद है या नहीं, यह निर्धारित करने के लिए विक्षनरी के एपीआई का उपयोग कैसे किया जा सकता है?


जिस किसी ने भी डॉक्यूमेंटेशन पढ़ा है, वह यह देखेगा कि एपीआई में "विक्षनरी शब्द सामग्री को पुनः प्राप्त करने" के लिए पर्याप्त कार्यक्षमता नहीं है। मुझे लगता है कि यह आपको लगभग 1% रास्ता देता है। आप कच्चे विकी सिंटैक्स या पार्स किए गए HTML को पुनः प्राप्त कर सकते हैं और वहाँ से आपको स्वयं सब कुछ करना होगा। कहा जा रहा है कि एक बहुत ही नया प्रायोगिक एपीआई हो सकता है जो केवल अंग्रेजी विकिपीडिया पर काम करता है।
हिप्पिट्रैएल

3
: अलग-अलग JSON फ़ाइलों में सभी विक्षनरी लेख यहाँ जाओ github.com/dan1wang/jsonbook-builder
डैनियल

जवाबों:


69

एक शब्द मौजूद है या नहीं, यह जानने के लिए विक्षनरी एपीआई का उपयोग किया जा सकता है।

मौजूदा और गैर-मौजूदा पृष्ठों के उदाहरण:

http://en.wiktionary.org/w/api.php?action=query&titles=test http://en.wiktionary.org/w/api.php?action=query&titles=testx

पहला लिंक अन्य प्रकार के प्रारूपों पर उदाहरण प्रदान करता है जो पार्स करना आसान हो सकता है।

एक छोटे से XHTML प्रारूप में शब्द के डेटा को पुनः प्राप्त करने के लिए (अस्तित्व की आवश्यकता से अधिक होना चाहिए), पृष्ठ के मुद्रण योग्य संस्करण का अनुरोध करें:

http://en.wiktionary.org/w/index.php?title=test&printable=yes http://en.wiktionary.org/w/index.php?title=testx&printable=yes

फिर इन्हें किसी भी मानक XML पार्सर के साथ पार्स किया जा सकता है।


4
धन्यवाद; एपीआई स्वयं वह नहीं है जिसकी मैं उम्मीद कर रहा था, बल्कि आपके द्वारा दी गई लिंक वही है जिसकी मुझे तलाश थी।
Armentage

अब यह xml आउटपुट के अलावा अन्य के लिए अतिरिक्त प्रारूप पैरामीटर स्वीकार करता है जैसे: en.wiktionary.org/w/…
eenagy

4
काम नहीं आप हालांकि उम्मीद के रूप में हो सकता है en.wiktionary.org/wiki/Category:English_misspellings en.wiktionary.org/wiki/amatuer
endolith

उपयोग करें: https://en.wiktionary.org/w/?curid=[page_id]&printable=yesXHTML पृष्ठ का उपयोग करने के लिए पुनर्निर्देशित करें pageid
mie.ppa

2
केवल अंग्रेज़ी शब्दों के लिए इस API में फ़िल्टर कैसे करें?
नादव बी

28

कुछ जाँचें हैं कि विकिपीडिया में आपके द्वारा खोजे जा रहे नाम के साथ एक पृष्ठ है:

कैविएट # 1 : अंग्रेजी विकीमेरी सहित सभी विकिपीडियाओं का लक्ष्य वास्तव में हर भाषा में हर शब्द को शामिल करना है, इसलिए यदि आप बस एपीआई कॉल से ऊपर का उपयोग करते हैं तो आपको पता चल जाएगा कि जिस शब्द के बारे में आप पूछ रहे हैं वह कम से कम एक भाषा में एक शब्द है, लेकिन जरूरी नहीं कि अंग्रेजी: http://en.wiktionary.org/w/api.php?action=query&tmarks=dicare

कैविएट # 2 : शायद एक रीडायरेक्ट एक शब्द से दूसरे शब्द में मौजूद है। यह एक वैकल्पिक वर्तनी से हो सकता है, लेकिन यह किसी प्रकार की त्रुटि से हो सकता है। ऊपर दी गई API कॉल एक रीडायरेक्ट और एक लेख के बीच अंतर नहीं करेगी: http://en.wiktionary.org/w/api.php?action=query&tmarks=profilemetry

कैविएट # 3 : अंग्रेजी विकेंशनरी सहित कुछ विकिपीडियाओं में "आम गलत वर्तनी" शामिल हैं: http://en.wiktionary.org/w/api.php?action=query&tmarks=fourty

कैविएट # 4 : कुछ विक्षनरी स्टब प्रविष्टियों को अनुमति देते हैं जिनके पास शब्द के बारे में बहुत कम या कोई जानकारी नहीं है। यह कई विकिपीडियाओं पर सामान्य हुआ करता था लेकिन अंग्रेजी विकिपीडिया पर नहीं। लेकिन ऐसा लगता है कि अब यह अंग्रेजी विकिपीडिया पर भी फैल गया है: https://en.wiktionary.org/wiki/%E6%99%B6%E7%90%83 (जब ठूंठ भर गया है तो इसके लिए पर्मलिंक ताकि आप अभी भी देख सकें स्टब कैसा दिखता है: https://en.wiktionary.org/w/index.php?title=%E6%99%B6%E7%90%83&oldid=39757161 )

यदि आप जो चाहते हैं, उसमें ये शामिल नहीं हैं, तो आपको खुद ही विकिटेक्स को लोड करना होगा और पार्स करना होगा, जो कि एक मामूली काम नहीं है।


2
जो मैं वास्तव में करना चाहता था, वह गैर-अंग्रेज़ी विकेंद्री साइटों में से एक पर डेटा का एक पूरा डंप ले गया था, और फिर सामग्री को कुछ में बदल दिया जो मैं स्थानीय रूप से उपयोग कर सकता था। यह अब मूर्खतापूर्ण लगता है, लेकिन मैं उम्मीद कर रहा था कि मैं सभी शब्दों की सूची का अनुरोध कर सकता हूं, और फिर आवश्यकतानुसार एक समय में उनके दोषों / अनुवादों को नीचे खींच सकता हूं।
५० पर पंचाट

1
कैविएट # 2 का निर्धारण सरल है: &prop=infoक्वेरी में जोड़ें और redirectविशेषता के लिए प्रतिक्रिया देखें ।
svick

@svick: हाँ यह सच है # 2 एपीआई का उपयोग करते समय इसे दरकिनार करना आसान है, लेकिन ये बुनियादी चेतावनी भी विक्षनरी डेटा डंप फ़ाइलों को पार्स करने की कोशिश कर रही हैं , भले ही यह सवाल उस दृष्टिकोण के बारे में नहीं पूछता है।
हिप्पिट्रैएल

17

आप विकिमीडिया डेटा का एक डंप डाउनलोड कर सकते हैं । एफएक्यू में अधिक जानकारी है । आपके उद्देश्यों के लिए, परिभाषा डंप शायद xml डंप की तुलना में बेहतर विकल्प है।


2
वे डंप फाइलें बड़े पैमाने पर हैं, और यह स्पष्ट नहीं है कि कौन से डाउनलोड करना है? शायद नहीं ज्यादातर लोग इसके लिए क्या देख रहे हैं, वे बस प्रोग्राम को मुट्ठी भर शब्दों को देखना चाहते हैं।
सेरिन

1
मैं समझाता हूं कि कौन सी फाइल डाउनलोड करनी है - यानी परिभाषाएं डंप (मेरे लिंक से निर्देशिका एक ही फाइल के विभिन्न संस्करण हैं), और हां, यदि आप प्रोग्रामेटिक रूप से शब्दों को देखना चाहते हैं तो यह आदर्श है। यदि आप गारंटी दे सकते हैं कि कार्यक्रम केवल ऑनलाइन निष्पादित किया जाएगा, तो अन्य विकल्प भी हैं, लेकिन फिर भी मैं मूल प्रश्न के इस भाग का जवाब दे रहा हूं: "वैकल्पिक रूप से, क्या कोई ऐसा तरीका है जिससे मैं एक विकिमीडिया का समर्थन करने वाले शब्दकोश डेटा को खींच सकता हूं?"
किबरनेटिको

18
परिभाषाएँ डंप लिंक अब उपलब्ध नहीं है।
लाइव-लव

8

इसे वास्तव में सरल रखने के लिए, इस तरह से डंप से शब्द निकालें:

bzcat pages-articles.xml.bz2 | grep '<title>[^[:space:][:punct:]]*</title>' | sed 's:.*<title>\(.*\)</title>.*:\1:' > words

मुझे पृष्ठों-लेखों की एक प्रति कैसे मिलती है। xml.bz2?
Armentage

यह सिर्फ एक सामान्य नाम है जिसका उपयोग मैंने फॉर्म के डंप का वर्णन करने के लिए किया था LANGwiktionary-DATE-pages-articles.xml.bz2लिंक पर जाएं , फिर क्लिक करें LANGwiktionary(LANG उदा 'en', 'de' ...)।
बेनरथ

4

यदि आप पायथन का उपयोग कर रहे हैं, तो आप सुयश बेहरा द्वारा विक्षनरीपारर का उपयोग कर सकते हैं ।

आप इसे द्वारा स्थापित कर सकते हैं

sudo pip install wiktionaryparser

उदाहरण का उपयोग:

>>> from wiktionaryparser import WiktionaryParser
>>> parser = WiktionaryParser()
>>> word = parser.fetch('test')
>>> another_word = parser.fetch('test', 'french')
>>> parser.set_default_language('french')

1

आप JWKTL को आज़माना चाहते हैं। मुझे इसके बारे में पता चला;)

http://en.wikipedia.org/wiki/Ubiquitous_Knowledge_Processing_Lab#Wiktionary_API

http://www.ukp.tu-darmstadt.de/software/jwktl/


1
जिस उद्धरण का आप उल्लेख करते हैं, वह टूट गया है। यहाँ JWKTL पृष्ठ ukp.tu-darmstadt.de/software/jwktl का लिंक दिया गया है । यह वास्तव में नहीं है जो मुझे विश्वास है कि ओपी हालांकि की तलाश में है।
डीजेस्किनर

1

जैसा कि पहले उल्लेख किया गया है, इस दृष्टिकोण के साथ समस्या यह है कि विक्षनरी सभी भाषाओं के सभी शब्दों के बारे में जानकारी प्रदान करता है । इसलिए यह जांचने के लिए कि क्या कोई पृष्ठ विकिपीडिया एपीआई का उपयोग करके मौजूद है, काम नहीं करेगा क्योंकि गैर-अंग्रेजी शब्दों के लिए बहुत सारे पृष्ठ हैं। इसे दूर करने के लिए, आपको यह पता लगाने के लिए प्रत्येक पृष्ठ को पार्स करने की आवश्यकता है कि क्या अंग्रेजी शब्द का वर्णन करने वाला एक खंड है । पर्साइटेक्स को पार्स करना कोई मामूली काम नहीं है, हालांकि आपके मामले में यह उतना बुरा नहीं है। लगभग सभी मामलों को कवर करने के लिए आपको बस यह जांचने की ज़रूरत है कि क्या वाइकिटेक्स में Englishहेडिंग है। आपके द्वारा उपयोग की जाने वाली प्रोग्रामिंग भाषा के आधार पर, आप wikitext से एएसटी के निर्माण के लिए कुछ उपकरण पा सकते हैं । यह अधिकांश मामलों को कवर करेगा, लेकिन उन सभी को नहीं क्योंकि विकिपीडिया में कुछ सामान्य गलतियाँ शामिल हैं।

एक विकल्प के रूप में, आप लिंगुआ रोबोट या कुछ इसी तरह का उपयोग करने की कोशिश कर सकते हैं । लिंगुआ रोबोट विकिपीडिया की सामग्री को पार्स करता है और इसे REST API के रूप में प्रदान करता है। गैर-रिक्त प्रतिक्रिया का मतलब है कि शब्द मौजूद है। कृपया ध्यान दें कि, विक्षनरी के विपरीत, एपीआई में स्वयं में कोई भी गलत वर्तनी शामिल नहीं है (कम से कम इस उत्तर को लिखने के समय)। कृपया यह भी ध्यान दें कि विकिपीडिया में केवल शब्द नहीं हैं, बल्कि बहु-शब्द अभिव्यक्तियाँ हैं।


0

यहाँ व्युत्पत्ति और उच्चारण डेटा पार्स करने के लिए एक शुरुआत है:

function parsePronunciationLine(line) {
  let val
  let type
  line.replace(/\{\{\s*a\s*\|UK\s*\}\}\s*\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en\}\}/, (_, $1) => {
    val = $1
    type = 'uk'
  })
  line.replace(/\{\{\s*a\s*\|US\s*\}\}\s*\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en\}\}/, (_, $1) => {
    val = $1
    type = 'us'
  })
  line.replace(/\{\{enPR|[^\}]+\}\},?\s*\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en}}/, (_, $1) => {
    val = $1
    type = 'us'
  })
  line.replace(/\{\{a|GA\}\},?\s*\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en}}/, (_, $1) => {
    val = $1
    type = 'ga'
  })
  line.replace(/\{\{a|GA\}\},?.+\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en}}/, (_, $1) => {
    val = $1
    type = 'ga'
  })
  // {{a|GA}} {{IPA|/ˈhæpi/|lang=en}}
  // * {{a|RP}} {{IPA|/pliːz/|lang=en}}
  // * {{a|GA}} {{enPR|plēz}}, {{IPA|/pliz/|[pʰliz]|lang=en}}

  if (!val) return

  return { val, type }
}

function parseEtymologyPiece(piece) {
  let parts = piece.split('|')
  parts.shift() // first one is ignored.
  let ls = []
  if (langs[parts[0]]) {
    ls.push(parts.shift())
  }
  if (langs[parts[0]]) {
    ls.push(parts.shift())
  }
  let l = ls.pop()
  let t = parts.shift()
  return [ l, t ]
  // {{inh|en|enm|poisoun}}
  // {{m|enm|poyson}}
  // {{der|en|la|pōtio|pōtio, pōtiōnis|t=drink, a draught, a poisonous draught, a potion}}
  // {{m|la|pōtō|t=I drink}}
  // {{der|en|enm|happy||fortunate, happy}}
  // {{cog|is|heppinn||lucky}}
}

अद्यतन : यहाँ एक और अधिक fleshed के साथ एक मुट्ठी है।


धन्यवाद, ब्राउज़र devtools कंसोल के अंदर इसे चलाने की कोशिश की। क्या है langs?
knb

1
एक gist के साथ अपडेट की गई, langsकुछ हजार लाइनें हैं, जो SO के लिए बहुत बड़ी हैं।
लांस पोलार्ड

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.