آی تی آموزی/ چگونه اطلاعات ویکی پدیا را استخراج و تحلیل کنیم؟
سایز متن
الف الف
لینک کوتاه در کلیبرد کپی شد!http://akhr.ir/4815921
۱۳۱
۰
زوميت/ ويکيپديا بزرگترين دانشنامهي مردمي دنيا است که همگي با آن آشنا هستيم. در اين مقاله، به آموزش ابزار Mixnode و نحوهي استخراج و تحليل مقالات ويکيپديا ميپردازيم.
غناي اطلاعات ويکيپديا بر هيچکس پوشيده نيست. از درياي اطلاعات اين وبسايت ميتوان براي تحقيقهاي تجاري و غيرتجاري و تقريبا در هر زمينهاي بهره برد. شرکتها، محققان، دانشمندان داده و حتي افراد صرفا کنجکاو، همهوهمه درزمرهي افرادي قرار ميگيرند که سعي ميکنند دادههاي ويکيپديا را استخراج و تحليل کنند.
ويکيپديا بهمثابهي گنجينهاي است که از مجموعهاي از صدهاميليون صفحهي وب و ميليونها مقالهي وزين چندزبانه تشکيل شده است. اين امر ويکيپديا را به بهشت خزندگان وب (Web Crawler) تبديل کرده است. با جستوجويي ساده در گيتهاب، متوجه ميشويد بيش از سيصد خزندهي وب و پروژههاي مشابه براي استخراج داده از ويکيپديا وجود دارد.
وبکراولينگ، تنها راه موجود براي استخراج و تحليل دادههاي ويکيپديا نيست. براي مثال، ويکيمديا اجازهي استخراج دادهها در فرمتهاي متنوعي را ميدهد. همچنين، API ويکيمديا نهتنها براي دريافت اطلاعات، بلکه براي ايجاد باتها و تعامل با مقالات بهطور برنامهنويسيشده استفاده ميشود.
در آموزش زير، روي ابزار Mixnode تمرکز ميکنيم که استخراج و تحليل دادهها از ويکيپديا با استفاده از کوئريهاي SQL را فراهم ميآورد. براي استفاده از اين ابزار بايد با SQL آشنا باشيد.
Mixnode چگونه کار ميکند؟
Mixnode اجازه ميدهد با وب مانند پايگاه داده برخورد کنيد. با استفاده از Mixnode ميتوانيد کوئري بنويسيد و آن را روي وب اجرا کنيد. با اجراي کوئري مدنظر Mixnode بهطور خودکار صفحات لازم براي پاسخ به کوئري را پيدا ميکند.
مثالهاي زير نحوهي کارکرد Mixnode و استخراج و تحليل دادهها را شفافتر ميکند.
مثال ۱: بهدستآوردن آدرس تمامي صفحات ويکيپديا
متغير url نمايانگر آدرس صفحه است
pages جدولي است که هر رديف آن مطابق با صفحهي منحصربهفرد در وب است
با url_domain = 'wikipedia.org' مطمئن ميشويم که فقط صفحات ويکيپديا و سابدامينهاي آن (مانند en.wikipedia.org) مدنظر قرار ميگيرند. اگر بخواهيد فقط در ويکيپدياي فارسي جستوجو کنيد، کافي است عبارت fa.wikipedia.org را جايگزين کنيد.
مثال ۲: بهدستآوردن آدرس و عنوان تمامي مقالات ويکيپديا
css_text_first(content, 'h1#firstHeading') عنوان مقالهي ويکيپديا را خروجي ميدهد. با نگاهي به سورس HTML مقالات ويکيپديا، پي ميبريم h1#firstHeading مسير CSS براي عنوان مقاله است. css_text_first نيز تابعي است که اجازهي استخراج اولين مورد از انتخابگر CSS را ميدهد. content در اينجا سورس کامل HTML صفحه است.
ازآنجاييکه قصد داريم عناوين مقالات را بهدست آوريم و ميدانيم در آدرس مقالات ويکيپديا از /wiki/ استفاده ميشود، از url like '%/wiki/%' استفاده ميکنيم تا مطمئن شويم نتايجمان فقط به مقالات مربوط ميشود.
مثال ۳: بهدستآوردن عناوين تمامي مقالات شامل زيررشتهي Elon Musk
contains() تابعي است که اجازهي بررسي وجود يک زيررشته در يک رشته را ميدهد. با استفاده از contains(content, 'elon musk') مطمئن ميشويم که در نتايجمان عبارت Elon Musk موجود است.
مثال ۴: مرتبسازي مقالات ويکيپديا براساس تعداد ارجاعات
بررسي کد منبع يک مقالهي ويکيپديا نشان ميدهد تمامي ارجاعات و منابع با انتخابگر ol.references قابلدسترسي است. css_text(content, 'ol.references li') متن تمامي منابع مقاله را به ما ميدهد و ازآنجاييکه فقط به تعداد نياز داريم، پس از تابع cardinality() استفاده ميکنيم که اندازهي يک آرايه را برميگرداند. desc در خط آخر مقالات را بهصورت نزولي برايمان مرتب ميکند. براي مرتبسازي بهصورت صعودي از asc استفاده کنيد.
مثال ۵: مرتبسازي مقالات ويکيپديا براساس طول مقاله
words() آرايهاي شامل تمامي کلمات يک متن را برميگرداند. استفاده از cardinality(words(css_text_first(content, '#content'))) as article_length، تعداد کلمات يک مقاله را به ما ميدهد.
مثال ۶: اندازهي ميانگين يک مقالهي ويکيپديا
تابع avg() ميانگين دادههاي ورودياش را برميگرداند که در اينجا، تعداد کلمات تمامي مقالات ويکيپدياست.
مثال ۷: مرتبسازي مقالات ويکيپديا براساس بحثهاي آن
مباحث دربارهي يک مطلب در آدرسي مشابه /wiki/Talk: قرار دارند؛ بههميندليل از اين عبارت استفاده ميکنيم.
مثال ۸: پيداکردن تمامي مقالات ويکيپديا که لينکي به zoomit.ir دارند
ديدگاه شما چيست؟ تجربهي استفاده از اين ابزار را داشتهايد؟ ابزارهاي ديگري براي تحليل و استخراج دادهها از ويکيپديا ميشناسيد؟ نظرات خود را با ما و کاربران زوميت بهاشتراک بگذاريد.
ما را در کانال «آخرين خبر» دنبال کنيد