কীভাবে উইকশনারি শব্দের সামগ্রী পুনরুদ্ধার করবেন?


90

কোনও শব্দ বিদ্যমান আছে কি নেই তা নির্ধারণের জন্য কীভাবে উইকশনারের এপিআই ব্যবহার করা যেতে পারে?


যে কেউ ডকুমেন্টেশন পড়েছেন তা দেখতে পাবেন যে এপিআইতে "উইকশনারি শব্দের সামগ্রী পুনরুদ্ধার করতে" যথেষ্ট কার্যকারিতা নেই near আমি অনুমান করতে পারি যে এটি আপনাকে প্রায় 1% পথ পেয়েছে। আপনি কাঁচা উইকি সিনট্যাক্স বা পার্সড এইচটিএমএল পুনরুদ্ধার করতে পারেন এবং সেখান থেকে আপনাকে নিজেরাই সবকিছু করতে হবে। এমন একটি কথা বলেছিলেন যে এখানে একটি খুব নতুন পরীক্ষামূলক এপিআই হতে পারে যা কেবলমাত্র ইংলিশ উইকিউশনারিতে কাজ করে।
হিপ্পিট্রেইল

4
ব্যক্তিগত জেএসওএন ফাইলগুলিতে সমস্ত উইকিশন সম্পর্কিত নিবন্ধগুলি এখানে পান: 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

প্রথম লিঙ্কটি অন্যান্য ধরণের ফর্ম্যাটের উদাহরণ দেয় যা পার্স করা আরও সহজ হতে পারে।

একটি ছোট এক্সএইচটিএমএল ফর্ম্যাটে শব্দের ডেটা পুনরুদ্ধার করতে (অস্তিত্বের চেয়ে বেশি হওয়া দরকার) পৃষ্ঠার মুদ্রণযোগ্য সংস্করণটির জন্য অনুরোধ করুন:

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

এরপরে যে কোনও স্ট্যান্ডার্ড এক্সএমএল পার্সার দিয়ে পার্স করা যায়।


4
ধন্যবাদ; এপিআই নিজেই আমি যা আশা করছিলাম তা নয় তবে আপনি যে লিঙ্কটি সরবরাহ করেছিলেন তা হ'ল আমি যা খুঁজছিলাম।
আর্মেন্টেজ

4
: এখন এটা অতিরিক্ত বিন্যাস তাই মত XML আউটপুট পরিবর্তে অন্য পরামিতি গ্রহণ করে en.wiktionary.org/w/...
eenagy

4
আপনি যেমন আশা করছেন তেমন কাজ করতে পারে না যদিও এন.ইউইকিশনারি.আর.উইকি / বিভাগ ::
এন্ডোলিথ

ব্যবহার করুন: ব্যবহার https://en.wiktionary.org/w/?curid=[page_id]&printable=yesকরে এক্সএইচটিএমএল পৃষ্ঠায় পুনর্নির্দেশ করতে pageid
mie.ppa

4
কেবলমাত্র ইংরেজী শব্দের জন্য কীভাবে এই এপিআইতে ফিল্টার করবেন?
নাদভ বি

28

উইকিশনির একটি পৃষ্ঠার নাম যা আপনি সন্ধান করছেন তা কেবল যাচাই করার জন্য কয়েকটি সাবধানতা রয়েছে:

ক্যাভ্যাট # 1 : ইংরাজী উইকিউশনারি সহ সমস্ত উইকিশনির প্রকৃত পক্ষে প্রতিটি ভাষার প্রতিটি শব্দকে অন্তর্ভুক্ত করার লক্ষ্য রয়েছে, সুতরাং আপনি কেবলমাত্র উপরের এপিআই কল ব্যবহার করলে আপনি জানতে পারবেন যে আপনি যে শব্দটির বিষয়ে জিজ্ঞাসা করছেন তা কমপক্ষে একটি ভাষায় একটি শব্দ, তবে অগত্যা ইংরেজি: http://en.wiktionary.org/w/api.php?action=query&titles=dicare

ক্যাভেট # 2 : সম্ভবত একটি শব্দ থেকে অন্য শব্দের পুনর্নির্দেশের উপস্থিতি রয়েছে। এটি কোনও বিকল্প বানান থেকে হতে পারে তবে এটি কোনওরকমের ত্রুটি থেকে হতে পারে। উপরের এপিআই কলটি কোনও পুনঃনির্দেশ এবং নিবন্ধের মধ্যে পার্থক্য করবে না: http://en.wiktionary.org/w/api.php?action=query&titles=profilemetry

গুগল # 3 : ইংরাজী উইকিউশনারি সহ কয়েকটি উইকিশিয়ায় "সাধারণ ভুল বানান" অন্তর্ভুক্ত রয়েছে: http://en.wiktionary.org/w/api.php?action=query&titles=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 )

আপনি যদি যা চান তার মধ্যে এটি অন্তর্ভুক্ত না করা হয়, আপনাকে উইকাইটেক্সট নিজেই লোড করে এবং পার্স করতে হবে, এটি একটি তুচ্ছ কাজ নয়।


4
আমি সত্যিই যা করতে চেয়েছিলাম তা হ'ল অ-ইংরাজী উইকিউশনারি সাইটের কোনও একটিতে ডেটা পুরো ডাম্প নেওয়া, এবং তারপরে সামগ্রীগুলি স্থানীয়ভাবে ব্যবহার করতে পারি এমন কিছুতে পরিণত করা। এটি এখন নির্বোধ মনে হচ্ছে, তবে আমি আশা করছিলাম যে আমি সমস্ত শব্দের তালিকার জন্য অনুরোধ করতে পারি, এবং তারপরে তাদের ত্রুটিগুলি / অনুবাদগুলি প্রয়োজনমতো একবারে টানতে পারি।
আর্মেন্টেজ

4
কেভেট # 2 এ ফিক্সটি সহজ: &prop=infoক্যোয়ারীতে যুক্ত করুন এবং গুণকের জন্য প্রতিক্রিয়াটি পরীক্ষা করুন redirect
সোভিক

@ এসভিক: হ্যাঁ এটি সত্য যে এপিআই ব্যবহার করার সময় # 2 আরও সহজ হওয়া সহজ তবে এই প্রশ্নটি সেই পদ্ধতির বিষয়ে জিজ্ঞাসা না করে সত্ত্বেও এই বেসিক ক্যাভেটগুলি উইকিশনারি ডেটা ডাম্প ফাইলগুলি বিশ্লেষণ করার চেষ্টাও করে cover
হিপ্পিট্রেইল

17

আপনি উইকিউশনারি ডেটার ডাম্প ডাউনলোড করতে পারেন । এফএকিউ- তে আরও তথ্য রয়েছে । আপনার উদ্দেশ্যে, সংজ্ঞা ডাম্প সম্ভবত এক্সএমএল ডাম্পের চেয়ে ভাল পছন্দ।


4
এই ডাম্প ফাইলগুলি বিশাল, এবং কোনটি ডাউনলোড করতে হবে তা অস্পষ্ট (সমস্তগুলি?)। সম্ভবত বেশিরভাগ লোকেরা এটির জন্য যা খুঁজছেন তা নয় কেবল তারা প্রোগ্রাম্যিকভাবে কয়েকটি মুঠো শব্দ অনুসন্ধান করতে চান।
সেরিন

4
আমি কোন ফাইলটি ডাউনলোড করতে হবে তা বুঝিয়েছি - যেমন সংজ্ঞাগুলি ডাম্প (আমার লিঙ্ক থেকে ডিরেক্টরিটি একই ফাইলের বিভিন্ন সংস্করণ), এবং হ্যাঁ, আপনি যদি প্রোগ্রামিয়ালি শব্দগুলি সন্ধান করতে চান তবে এটি আদর্শ। আপনি যদি গ্যারান্টি দিতে পারেন তবে প্রোগ্রামটি কেবল অনলাইনেই কার্যকর করা হবে, অন্যান্য বিকল্প রয়েছে, তবে তবুও আমি মূল প্রশ্নের এই অংশটির উত্তর দিচ্ছি: "বিকল্পভাবে, অভিধানের ডেটা যে কোনও উইকিগ্রহের পিছনে আছে তা আমি টেনে আনতে পারি কি?"
কায়বার্নটিকোস

18
সংজ্ঞা ডাম্প লিঙ্ক আর উপলব্ধ নেই।
লাইভ-ভালবাসা

8

এটি সত্যিই সহজ রাখতে, ডাম্প থেকে শব্দগুলি এর মতো বের করুন:

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

আমি কীভাবে পেজ-আর্টিকেল.এক্সএমএল.বিজে 2 এর অনুলিপি পেতে পারি?
আর্মেন্টেজ

এটি কেবলমাত্র একটি সাধারণ নাম যা আমি ফর্মের ডাম্পগুলি বর্ণনা করতে ব্যবহার করি LANGwiktionary-DATE-pages-articles.xml.bz2লিঙ্কে যান , তারপরে ক্লিক করুন LANGwiktionary(LANG যেমন 'এন', 'ডি' ...)।
বেনরথ

5

আপনি পাইথন ব্যবহার করে থাকেন, আপনি ব্যবহার করতে পারেন WiktionaryParser Suyash Behera দ্বারা।

আপনি এটি দ্বারা ইনস্টল করতে পারেন

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.wikedia.org/wiki/Ubiquitous_ জ্ঞান_প্রক্রিয়া_ল্যাব# উইকশনারি_এপিআই

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


4
আপনি যে উদ্ধৃতি উল্লেখ করেছেন তা ভাঙ্গা। এখানে JWKTL পৃষ্ঠার লিঙ্কটি ukp.tu-darmstadt.de/software/jwktl রয়েছে । যদিও আমি বিশ্বাস করি যে ওপি যদিও সন্ধান করছে really
ডিজেস্কিনার

1

যেমনটি আগেই উল্লেখ করা হয়েছে, এই পদ্ধতির সাথে সমস্যাটি হ'ল উইকিশনারি সমস্ত ভাষার সমস্ত শব্দ সম্পর্কে তথ্য সরবরাহ করে । সুতরাং উইকিপিডিয়া এপিআই ব্যবহার করে কোনও পৃষ্ঠা বিদ্যমান কিনা তা খতিয়ে দেখার পদ্ধতির কাজ হবে না কারণ অ-ইংরেজি শব্দগুলির জন্য প্রচুর পৃষ্ঠা রয়েছে। এ থেকে উত্তরণের জন্য, আপনার প্রতিটি পৃষ্ঠার শংসাপত্র তৈরি করতে হবে যা ইংরেজী শব্দের বর্ণনায় বর্ণিত একটি বিভাগ আছে কিনা তা খুঁজে বের করতে । উইকিটেক্সট পার্স করা তুচ্ছ কাজ নয় যদিও আপনার ক্ষেত্রে এটি এতটা খারাপ নয়। প্রায় সমস্ত ক্ষেত্রে কভার করতে আপনার কেবল উইকিটেক্সটে Englishশিরোনাম রয়েছে কিনা তা পরীক্ষা করে দেখতে হবে । আপনি যে প্রোগ্রামিং ল্যাঙ্গুয়েজটি ব্যবহার করেন তার উপর নির্ভর করে আপনি উইকাইটেক্সট থেকে এএসটি তৈরির জন্য কিছু সরঞ্জাম খুঁজে পেতে পারেন । এটি বেশিরভাগ কেসকে কভার করবে তবে এগুলির সবকটিই নয় কারণ উইকশনারিতে কিছু সাধারণ ভুল বানান রয়েছে।

বিকল্প হিসাবে, আপনি লিংগুয়া রোবট বা অনুরূপ কিছু ব্যবহার করার চেষ্টা করতে পারেন । লিংগুয়া রোবট উইকশনারি সামগ্রীটি বিশ্লেষণ করে এটি একটি REST এপিআই হিসাবে সরবরাহ করে। খালি খালি প্রতিক্রিয়ার অর্থ শব্দটি বিদ্যমান। দয়া করে নোট করুন, উইকশনারিটির বিপরীতে, এপিআই নিজেই কোনও ভুল বানান অন্তর্ভুক্ত করে না (অন্তত এই উত্তরটি লেখার মুহুর্তে)। দয়া করে নোট করুন যে উইকিউশনারিটিতে কেবল শব্দগুলিই নয়, বহু-শব্দের এক্সপ্রেশন রয়েছে।


1

আপনি সংশোধনগুলি API ব্যবহার করতে পারেন:

https://en.wiktionary.org/w/api.php?action=query&prop=revisions&titles=test&rvslots=*&rvprop=content&formatversion=2

বা পার্স এপিআই:

https://en.wiktionary.org/w/api.php?action=parse&page=test&prop=wikitext&formatversion=2

আরও দস্তাবেজগুলিতে উদাহরণ সরবরাহ করা হয়েছে ।


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 হয়।


ধন্যবাদ, এটি ব্রাউজার ডিভটোল কনসোলের ভিতরে চালানোর চেষ্টা করেছিল। কি langs?
17-29 এ নক করুন

4
সংক্ষেপে আপডেট হয়েছে, langsকয়েক হাজার লাইন, এসও এর পক্ষে খুব বড়।
ল্যান্স পোলার্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.