ইউআরএল থেকে পাঠ্য উত্তোলনের জন্য পাঠযোগ্যতা কোন অ্যালগরিদম ব্যবহার করে?


102

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

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

কেউ জানেন কীভাবে তারা এটি করে? বা আমি কীভাবে এটি নির্ভরযোগ্যভাবে করতে পারি?


3
প্রশ্নটি এই যে অ্যালগরিদম এসও ব্যবহার করে যে পাঠযোগ্যতা তার পৃষ্ঠাগুলি পরিচালনা করে না? :)
পাইটর ডব্রোগস্ট

উত্তর:


170

পঠনযোগ্যতা মূলত হিউরিস্টিকস নিয়ে গঠিত যা "বেশিরভাগ ক্ষেত্রে ভালভাবে কাজ করে" অনেক ক্ষেত্রে।

আমি এই বিষয় সম্পর্কে কিছু গবেষণা কাগজ লিখেছি এবং আমি কেন ভাল সমাধান করতে পারে এমন সমাধান নিয়ে আসা সহজ এবং যখন 100% যথার্থতার কাছাকাছি পাওয়া কঠিন হয় তার পটভূমিটি ব্যাখ্যা করতে চাই।

মানব ভাষার অন্তর্নিহিত এমন একটি ভাষাগত আইন রয়েছে যা ওয়েব পৃষ্ঠার সামগ্রীতে প্রকাশিত (তবে একচেটিয়াভাবে নয়) যা ইতিমধ্যে পরিষ্কারভাবে দুটি প্রকারের পাঠ্যকে পৃথকভাবে পৃথক করে (সম্পূর্ণ পাঠ্য বনাম, পূর্ণ-পাঠ্য বা প্রায়, " মূল সামগ্রী "বনাম" "বয়লারপ্লেট")।

এইচটিএমএল থেকে মূল বিষয়বস্তু পেতে, এটি বেশিরভাগ ক্ষেত্রে কেবলমাত্র এইচটিএমএল পাঠ্য উপাদানগুলি (যেমন পাঠ্যের ব্লকগুলি যা মার্কআপ দ্বারা বিঘ্নিত হয় না) রাখে যা প্রায় 10 টিরও বেশি শব্দ রাখে। এটি প্রদর্শিত হয় যে পাঠ্য লেখার দুটি পৃথক প্রেরণার জন্য মানুষ দুটি প্রকারের পাঠ্য ("সংক্ষিপ্ত" এবং "লম্বা" থেকে শব্দ নির্ধারণ করে যা তারা নির্গত হয়) আমি তাদের "নেভিগেশনাল" এবং "তথ্য" প্রেরণা বলব।

যদি কোনও লেখক আপনাকে চান দ্রুত চান যা লেখা আছে তা পান, তিনি "নেভিগেশনাল" পাঠ্য ব্যবহার করেন, অর্থাত্ কয়েকটি শব্দ (যেমন "স্টপ", "এটি পড়ুন", "এখানে ক্লিক করুন")। নেভিগেশনাল উপাদানগুলির মধ্যে এটি বেশিরভাগ বিশিষ্ট পাঠ্য (মেনু ইত্যাদি)

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

যদিও এই বিচ্ছেদ ঘটনাগুলির আধিক্যে কাজ করে বলে মনে হচ্ছে, এটি শিরোনাম, সংক্ষিপ্ত বাক্য, অস্বীকৃতি, কপিরাইট পাদদেশ ইত্যাদি দ্বারা জটিল হয়ে উঠছে with

এখানে আরও পরিশীলিত কৌশল এবং বৈশিষ্ট্য রয়েছে যা মূল সামগ্রীকে বয়লারপ্লেট থেকে পৃথক করতে সহায়তা করে। উদাহরণস্বরূপ লিঙ্কের ঘনত্ব (ব্লকের শব্দের সংখ্যা যা ব্লকের সামগ্রিক সংখ্যার তুলনায় লিঙ্কযুক্ত), পূর্ববর্তী / পরবর্তী ব্লকের বৈশিষ্ট্য, "পুরো" ওয়েবে একটি নির্দিষ্ট ব্লকের পাঠ্যের ফ্রিকোয়েন্সি এইচটিএমএল ডকুমেন্টের ডিওএম কাঠামো, পৃষ্ঠার ভিজ্যুয়াল চিত্র ইত্যাদি

আপনি আমার সর্বশেষ নিবন্ধটি পড়তে পারেন " অগভীর পাঠ্য বৈশিষ্ট্যগুলি ব্যবহার করে বয়লারপ্লেট সনাক্তকরণতাত্ত্বিক দৃষ্টিভঙ্গি থেকে কিছুটা অন্তর্দৃষ্টি পেতে । আপনি আমার কাগজের উপস্থাপনার ভিডিওটি ভিডিওলেক্টার.টনেও দেখতে পাবেন।

"পঠনযোগ্যতা" এই বৈশিষ্ট্যগুলির কয়েকটি ব্যবহার করে। আপনি যদি সাবধানে এসভিএন চেঞ্জলগটি দেখে থাকেন তবে দেখতে পাবেন যে সময়ের সাথে সাথে কৌশলগুলির সংখ্যা বিভিন্ন রকম হয়েছিল এবং পাঠযোগ্যতার এক্সট্রাকশন কোয়ালিটিরও এটি ছিল। উদাহরণস্বরূপ, ২০০৯ সালের ডিসেম্বরে লিঙ্কের ঘনত্বের প্রবর্তন খুব উন্নতি করতে সহায়তা করেছিল।

আমার মতে, অতএব এটি সঠিক সংস্করণ সংখ্যা উল্লেখ না করে "পাঠযোগ্যতা এটির মতো করে" বলার কোনও মানে নেই।

আমি একটি ওপেন সোর্স এইচটিএমএল বিষয়বস্তু নিষ্কাশন লাইব্রেরি প্রকাশ করেছি যার নাম বয়লারপাইপ যার , যা বেশ কয়েকটি পৃথক নিষ্কাশন কৌশল সরবরাহ করে। ব্যবহারের ক্ষেত্রে উপর নির্ভর করে, এক বা অন্য এক্সট্র্যাক্টর আরও ভাল কাজ করে। গুগল অ্যাপইঞ্জিনে সহযোদ্ধা বয়লারপাইপ-ওয়েব অ্যাপ্লিকেশনটি ব্যবহার করে আপনি এই পছন্দের পৃষ্ঠাগুলিতে এই এক্সট্র্যাক্টরগুলি চেষ্টা করতে পারেন।

সংখ্যাগুলি বলতে, বয়লারপাইপ উইকিতে " বেঞ্চমার্কস " পৃষ্ঠাটি দেখুন যা বয়লারপাইপ, পাঠযোগ্যতা এবং অ্যাপল সাফারি সহ কয়েকটি নিষ্কাশন কৌশলগুলির সাথে তুলনা করে।

আমার উল্লেখ করা উচিত যে এই অ্যালগোরিদমগুলি ধরে নিয়েছে যে মূল বিষয়বস্তুটি আসলে সম্পূর্ণ পাঠ্য। এমন কিছু ক্ষেত্রে রয়েছে যেখানে "মূল বিষয়বস্তু" অন্য কিছু, যেমন একটি চিত্র, একটি টেবিল, একটি ভিডিও ইত্যাদি al

চিয়ার্স,

খ্রীষ্টান


3
এই বয়লারপাইপ প্রকল্পটি কি এখনও সক্রিয়?
এবি

5
আমি বিশ্বাস করি আপনি আপনার প্রকল্পটি আরও ভালভাবে গিটহাবের উপরে রেখেছেন যাতে এটি ওপেন সোর্স বিকাশকারীদের দ্বারা সামাজিকভাবে বৃদ্ধি পাবে।
ইনঙ্ক গুমাস

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

1
আমার রেপোতে একটি কপি "মাইগ্রেটেড" github.com/k-bx/boilerpipe এটি হারিয়ে যাওয়ার ক্ষেত্রে কেবল :)
কনস্ট্যান্টাইন রাইবনিকভ

16

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

পাঠযোগ্যতার কর্মপ্রবাহ এবং কোড:

/*
     *  1. Prep the document by removing script tags, css, etc.
     *  2. Build readability's DOM tree.
     *  3. Grab the article content from the current dom tree.
     *  4. Replace the current DOM tree with the new one.
     *  5. Read peacefully.
*/

javascript: (function () {
    readConvertLinksToFootnotes = false;
    readStyle = 'style-newspaper';
    readSize = 'size-medium';
    readMargin = 'margin-wide';
    _readability_script = document.createElement('script');
    _readability_script.type = 'text/javascript';
    _readability_script.src = 'http://lab.arc90.com/experiments/readability/js/readability.js?x=' + (Math.random());
    document.documentElement.appendChild(_readability_script);
    _readability_css = document.createElement('link');
    _readability_css.rel = 'stylesheet';
    _readability_css.href = 'http://lab.arc90.com/experiments/readability/css/readability.css';
    _readability_css.type = 'text/css';
    _readability_css.media = 'all';
    document.documentElement.appendChild(_readability_css);
    _readability_print_css = document.createElement('link');
    _readability_print_css.rel = 'stylesheet';
    _readability_print_css.href = 'http://lab.arc90.com/experiments/readability/css/readability-print.css';
    _readability_print_css.media = 'print';
    _readability_print_css.type = 'text/css';
    document.getElementsByTagName('head')[0].appendChild(_readability_print_css);
})();

এবং আপনি উপরের কোডটি যে জেএস এবং সিএসএস ফাইলগুলি অনুসরণ করে তা অনুসরণ করলে আপনি পুরো ছবিটি পাবেন:

http://lab.arc90.com/experiments/readability/js/readability.js (এটি বেশ ভাল মন্তব্য করা হয়েছে, আকর্ষণীয় পড়া)

http://lab.arc90.com/experiments/readability/css/readability.css


12

অবশ্যই এটি করার কোনও 100% নির্ভরযোগ্য উপায় নেই। আপনি এখানে পঠনযোগ্যতা উত্স কোডটি দেখতে পারেন

মূলত, তারা যা করছে তা হ'ল পাঠ্যের ইতিবাচক এবং নেতিবাচক ব্লক সনাক্ত করার চেষ্টা করছে । ইতিবাচক সনাক্তকারী (অর্থাত্ ডিভ আইডি) এমন কিছু হবে:

  • প্রবন্ধ
  • শরীর
  • সন্তুষ্ট
  • ব্লগ
  • গল্প

নেতিবাচক শনাক্তকারীরা হবেন:

  • মন্তব্য
  • আলোচনা করা

এবং তারপরে তাদের সম্ভাবনা নেই এবং সম্ভবত প্রার্থী রয়েছে। তারা কী করবে তা নির্ধারণ করা হয় যে সাইটের প্রধান বিষয়বস্তু হওয়ার সম্ভাবনা সবচেয়ে বেশি, 678পাঠযোগ্যতার উত্সটিতে লাইনটি দেখুন । এটি বেশিরভাগ অনুচ্ছেদের দৈর্ঘ্য, তাদের শনাক্তকারী (উপরে দেখুন), ডিওএম ট্রি (যেমন অনুচ্ছেদটি একটি শেষ শিশু নোড) বিশ্লেষণ করে করা হয়, অযৌক্তিকভাবে সমস্ত কিছু সরিয়ে ফর্ম্যাটিং সরান ইত্যাদি by

কোডটির 1792 টি লাইন রয়েছে। এটি একটি তুচ্ছ সমস্যা মনে হচ্ছে না, তাই আপনি সেখান থেকে আপনার অনুপ্রেরণা পেতে পারেন।


2
তাদের কোডটি ওপেন সোর্স কিনা এবং বাণিজ্যিক পণ্যগুলিতে এটি ব্যবহার করা যেতে পারে কিনা তা আপনি কী জানতে পারেন?
user300981

2
এটি বলে যে উত্স কোডটি অ্যাপাচি লাইসেন্স ২.০ এর আওতায় প্রকাশিত হয়েছে, এর অর্থ আপনি এটি ব্যবহার করতে পারবেন, এটি বিতরণ করতে পারবেন, এর পরিবর্তিত সংস্করণগুলি সংশোধন ও বিতরণ করতে পারবেন। যদিও আমি বিশদ সম্পর্কে খুব পরিষ্কার নয়।
slhck

2
@ ববস্মিথ অ্যাপল সাফারির সর্বশেষতম সংস্করণে এটি ব্যবহার করেছে। তারা রিলিজ নোটগুলিতে আর্ক 90 জমা দিয়েছে।
s4y

7

মজাদার. আমি অনুরূপ পিএইচপি স্ক্রিপ্ট তৈরি করেছি। এটি মূলত নিবন্ধগুলি স্ক্যান করে এবং সমস্ত পাঠ্যের (ব্রিল ট্যাগার) বক্তব্যের কিছু অংশ সংযুক্ত করে। তারপরে, ব্যাকরণগতভাবে অবৈধ বাক্যগুলি তাত্ক্ষণিকভাবে বাদ দেওয়া হয়। তারপরে, সর্বনামে বা অতীত কালকে হঠাৎ শিফট নিবন্ধটি শেষ হয়ে গেছে বা এখনও শুরু হয়নি indicate বারবার বাক্যাংশগুলি অনুসন্ধান করা এবং মুছে ফেলা হয়, যেমন "ইয়াহু নিউজ স্পোর্টস ফিনান্স" পৃষ্ঠাতে দশবার প্রদর্শিত হয়। আপনি বিভিন্ন আবেগ সম্পর্কিত শব্দ ব্যাঙ্কের আধিক্যের সাথে স্বরে পরিসংখ্যানও পেতে পারেন। সক্রিয় / নেতিবাচক / আর্থিক থেকে প্যাসিভ / পজেটিভ / রাজনৈতিক থেকে হঠাৎ স্বরে পরিবর্তন একটি সীমানা নির্দেশ করে। এটি সত্যই অন্তহীন, তবে আপনি গভীর করতে চান খনন।

প্রধান সমস্যাগুলি হ'ল লিঙ্কগুলি, এম্বেড হওয়া অসঙ্গতিগুলি, স্ক্রিপ্টিং শৈলী এবং আপডেটগুলি।


3
এটি দেখতে আসলেই একটি আকর্ষণীয় পদ্ধতির মতো মনে হচ্ছে - এটি থেকে ভাগ করার জন্য আপনার কি কোনও কোড আছে?
lsh

2
আমি দ্বিতীয় যে, আপনার কোডটি ঘিরে এমন কোনও উদাহরণ কোড বা তথ্য রয়েছে যা আমরা দেখতে পারি?
userabuser
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.