<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>یادداشت‌ها |</title><link>https://clementgodbarge.com/fa/category/%DB%8C%D8%A7%D8%AF%D8%AF%D8%A7%D8%B4%D8%AA%D9%87%D8%A7/</link><atom:link href="https://clementgodbarge.com/fa/category/%DB%8C%D8%A7%D8%AF%D8%AF%D8%A7%D8%B4%D8%AA%D9%87%D8%A7/index.xml" rel="self" type="application/rss+xml"/><description>یادداشت‌ها</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fa</language><lastBuildDate>Sun, 06 Sep 2026 00:00:00 +0000</lastBuildDate><image><url>https://clementgodbarge.com/media/icon_hu_64a6c3bec25b3d7b.png</url><title>یادداشت‌ها</title><link>https://clementgodbarge.com/fa/category/%DB%8C%D8%A7%D8%AF%D8%AF%D8%A7%D8%B4%D8%AA%D9%87%D8%A7/</link></image><item><title>حصار، نه آتش</title><link>https://clementgodbarge.com/fa/post/fence-not-fire/</link><pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/fa/post/fence-not-fire/</guid><description>&lt;p&gt;در انباری در شمال لاس‌وگاس، Amazon ماشینی به کار انداخته که عطف کتاب‌های دست‌دوم را می‌بُرد. صفحه‌های جداشده از اسکنر می‌گذرند و کاغذ سپس به خمیر کردن می‌رود.
این کار را با کتاب‌سوزان مدرن قیاس کرد و در این راه از هیچ کلیشه‌ای دریغ نورزید: اشاره به ساوونارولا، عکس‌های آرشیوی از کتاب‌هایی به‌ظاهر نایاب و، البته، آتش برلین. روزنامه‌های جدی‌تر، چنان‌که انتظار می‌رفت، خونسردتر بودند اما همان مقایسه را در هوا معلق گذاشتند. این مقاله‌ها با همهٔ برآشفتگی‌شان، گذاشتند صنعت هوش مصنوعی به‌طرزی شگفت‌انگیز قسر در برود. کنترل دانشی که اسکن می‌شود دست کیست؟ این پرسش باید صبر کند تا نخست تکلیف یاوهٔ کتاب‌سوزان را روشن کنیم.&lt;/p&gt;
&lt;h2 id="اسکنر-آتشسوزی-نیست"&gt;اسکنر آتش‌سوزی نیست&lt;/h2&gt;
&lt;p&gt;نابود کردن یک نسخهٔ کاغذی، به‌خودی‌خود، اسکن مخرب را همتای مدرنِ آتش ساوونارولا یا کتاب‌سوزان نازی‌ها نمی‌کند. آن کارها معنایشان را از آنچه محکوم می‌شد و از چرایی محکومیتش می‌گرفتند. آن راهب بینوا، ساوونارولا، که پایش را به هر جنجال کتاب‌سوزی می‌کشند، از مردم می‌خواست بخشی از دارایی‌شان را همچون توبه‌ای علنی به آتش بیندازند. آتش نازی‌ها گونه‌ای دیگر از طرد را به صحنه می‌برد: سوزاندن علنی کتاب‌ها اعلام می‌کرد که نویسندگانشان در حیات فرهنگی آلمان جایی ندارند. در هر دو مورد، نابودی نمایشی بود. اسکن مخرب، که روشی رایج در دیجیتال‌سازی است، غرض دیگری دارد: نسخه قربانی می‌شود تا محتوایش بماند. کتاب از میان می‌رود؛ متن از ماده رها می‌شود. هر کس دست به دامن &lt;em&gt;فارنهایت 451&lt;/em&gt; می‌شود، خوب است به یاد آورد که آتش‌نشانان بردبری متن را برای بعد نگه نمی‌داشتند.&lt;/p&gt;
&lt;p&gt;
با گذاشتن «کتاب‌های نایاب» در تیتر خود بر دامنهٔ هراس افزود، و رسانه‌های دیگر هم به‌نوبهٔ خود این وصف را تکرار کردند. حال آنکه کتاب‌فروشی که در همان گزارش از او نقل شده گفته بود این سفارش‌های عمده
؛ یعنی عمدتاً چاپ‌هایی که از حدود 1970، زمان رواج شابک، به بعد منتشر شده‌اند. این‌ها جنس بساط دست‌دوم‌فروش‌ها و مغازه‌های خیریه‌اند که غالباً یک خانه‌تکانی با زباله‌دانی فاصله دارند. پیش از اعلام فاجعهٔ فرهنگی، بد نیست فهرست کتابخانه را نگاهی بیندازیم. این‌ها دقیقاً همان انتشاراتی‌اند که کتابخانه‌های واسپاری قانونی برای نگهداری‌شان به وجود آمده‌اند. البته شابک داشتن، بقای نسخهٔ واسپاری را تضمین نمی‌کند؛ اما کمیابی در بازار دست‌دوم هم ناپدید شدن یک متن را ثابت نمی‌کند.&lt;/p&gt;
&lt;p&gt;خمیر کردن، نسخهٔ فیزیکی را با هر یادگاری‌نوشته و حاشیه‌ای که دارد از میان می‌برد. نسخه‌هایی که حاشیه‌نویسی یا پیشینهٔ مالکیت مهمی از نظر تاریخی دارند سزاوارند شناسایی و حفظ شوند، ترجیحاً پیش از آنکه به بازار دست‌دوم برسند. می‌توان همچنان نگران کم شدن نسخه‌های کاغذی عنوان‌های از چاپ خارج‌شده بود. اما در آن صورت باید پرسید چرا صاحبان حقوقشان نه آن‌ها را تجدید چاپ می‌کنند و نه اجازهٔ دسترسی به نسخه‌های دیجیتال موجود را می‌دهند. پژوهشگران این کلافگی را خوب می‌شناسند: Google Books عبارت مورد نیازتان را پیدا می‌کند و بعد تکه‌ای کوچک از کتابی را نشانتان می‌دهد که نه می‌توانید نو بخرید و نه آنلاین بخوانید. اینجا خسارت‌هایی هست که ارزش بحث دارد. ولی هیچ‌یک اسکنر را به آتش نازی‌ها بدل نمی‌کند.&lt;/p&gt;
&lt;p&gt;از این گذشته، صنعت نشر از دیرباز کتاب‌های فروش‌نرفته را به‌طور روزمره خمیر می‌کند. تنها در فرانسه، برآورد می‌شود که
، یعنی نزدیک به 60 درصد از تناژی که فروش‌نرفته به پخش‌کننده‌ها برگشته است. نام این کار «مدیریت موجودی» است. نسخه‌های مازاد و عنوان‌های کمیاب دست‌دوم پرسش‌های متفاوتی دربارهٔ دسترسی پیش می‌کشند، اما نابود کردن کاغذ به‌خودی‌خود نه سانسور است و نه استبداد.&lt;/p&gt;
&lt;h2 id="کتاب-بیشتر-هوش-مصنوعی-بهتر"&gt;کتاب بیشتر، هوش مصنوعی بهتر؟&lt;/h2&gt;
&lt;p&gt;اینکه شرکت‌های هوش مصنوعی کتاب می‌خرند و اسکن می‌کنند در واقع خبر خوبی است. فناوری‌ای که پیوسته به درک سطحی‌اش از فرهنگ بشری متهم می‌شود دارد از آن فرهنگ بیشتر برمی‌گیرد، و انتظار می‌رفت اهل دانشگاه از این تلاش استقبال کنند.&lt;/p&gt;
&lt;p&gt;وب جانشین ناقصی برای گنجینهٔ انباشتهٔ یک زبان است. بخش بزرگی از حیات مکتوب هر زبان، از رمان و خاطرات گرفته تا ترانه‌های عامه‌پسند و گفت‌وگوهای پیاده‌شده، هرگز از چاپ به وب راه نیافته است. بسیاری از این کتاب‌ها از ناشرانشان بیشتر عمر کرده‌اند. راه دادن آن‌ها به داده‌های آموزشی آنجا بیشترین اهمیت را دارد که چیز دیگری در دسترس نیست. چند کتاب بیشتر به انگلیسی شاید بهبودی حاشیه‌ای بیاورد. در زبانی که بازنمایی ضعیفی دارد، همان کتاب‌ها می‌توانند مرز میان سامانه‌ای کارآمد و سامانه‌ای بی‌فایده باشند. اینکه این ابزارها جایی در خدمات عمومی یا زندگی روزمرهٔ ما داشته باشند یا نه، پرسشی است برای بحث عمومی. اما هر جا که تصمیم بگیریم از آن‌ها استفاده کنیم، باید بتوانیم به زبان خودمان استفاده کنیم.&lt;/p&gt;
&lt;p&gt;سفارش‌هایی که از اسپانیا و هلند گزارش شده، بُعد زبانی ماجرا را ملموس می‌کند. در ماه مه،
از کتاب‌فروشی در بادالونا نوشت که سفارش‌های پیاپی دریافت می‌کرد، عمدتاً برای آثار غیرداستانی کاتالان: کتاب‌های تاریخ، راهنماهای فنی و مجموعه‌مقالات کنفرانس‌های قدیمی. تا ماه اوت، گزارش‌های هلندی از درخواستی به De Slegte برای
خبر می‌دادند. زبان کتاب‌ها دست‌کم به همان اندازهٔ سرنوشت جلدشان سزاوار توجه است. شاید این از Daily Mail انتظار زیادی باشد. ولی روزنامه‌های سنجیده‌تر هم دربارهٔ زبان‌های دخیل چیز چندانی نگفته‌اند.&lt;/p&gt;
&lt;p&gt;قراردادهای مجوز با ناشران بزرگ هم می‌توانند مواد ارزشمندی فراهم کنند، اما فهرست‌های دیجیتال آن‌ها تنها کسری از آنچه به چاپ رسیده را در بر می‌گیرد. کتاب‌هایی که هرگز دیجیتال نشده‌اند، یا حقوقشان دیگر در دست ناشر نیست، بیرون از این عرضه می‌مانند. حتی سخاوتمندانه‌ترین قرارداد مجوز هم نمی‌تواند جای تاریخ نشر را بگیرد، چه رسد به تاریخ یک فرهنگ. خرید نسخه‌های دست‌دوم راهی است برای گذشتن از این مرزهای تجاری.&lt;/p&gt;
&lt;h2 id="دزدی-استدلال-نیست"&gt;«دزدی» استدلال نیست&lt;/h2&gt;
&lt;p&gt;«دزدی» نامیدنش هم کمکی نمی‌کند. در ژوئن 2025، دو دادگاه ناحیه‌ای ایالات متحده حکم دادند که استفاده از کتاب‌ها برای آموزش مدل‌های زبانی، در پرونده‌های مطروحه، استفادهٔ منصفانه بوده است. در پروندهٔ
، دادگاه بر خصلت دگرگون‌ساز آموزش تأکید کرد: کتاب‌ها برای ساختن سامانه‌ای به کار رفته بودند که می‌تواند بیان تازه‌ای تولید کند. مدل‌ها ممکن است عباراتی را از بر کنند، اما استفاده از یک کتاب در آموزش، تمام متن آن را در دسترسِ بازیابی به فرمان قرار نمی‌دهد. از سوی دیگر، نبودِ بازتولید عین‌به‌عین هم همهٔ اعتراض‌ها را پاسخ نمی‌دهد. در پروندهٔ
، قاضی هشدار داد که آثار تولیدشده با هوش مصنوعی می‌توانند بازار را اشباع کنند و شواهدی از چنین زیانی می‌تواند دفاع استفادهٔ منصفانه را از پا درآورد. این شاکیان اما شاهد معناداری از چنین زیانی به آثار خودشان ارائه نکرده بودند. هیچ‌یک از دو حکم به شرکت‌های هوش مصنوعی اجازهٔ بی‌قید و شرط نمی‌دهد و نزاع اخلاقی را نیز فیصله نمی‌دهد. آنچه از ما می‌خواهند تمایز گذاشتن است میان اینکه کتاب‌ها چگونه به دست می‌آیند، نسخه‌ها چگونه نگهداری می‌شوند و آموزش با آن‌ها چه می‌کند. «دزدی» نامیدن همهٔ این‌ها، آن پرسش‌ها را بی‌پاسخ می‌گذارد.&lt;/p&gt;
&lt;p&gt;در ضمن، حکم پروندهٔ Anthropic دلیلی هم برای گیوتین به دست می‌دهد. دادگاه دیجیتال‌سازی نسخه‌های خریداری‌شده را تأیید کرد و انباشتن کتاب‌های دزدی در کتابخانه‌ای دائمی را مردود شمرد؛ همان چیزی که شرکت بعدها بر سر آن
. دیجیتال‌سازی تا حدی از آن رو پذیرفته شد که هر نسخهٔ چاپی در جریان تبدیل نابود شده بود: نسخهٔ دیجیتال جای آن را گرفته و بیرون از شرکت به اشتراک گذاشته نشده بود. همان نابودی‌ای که این‌همه خاطر برخی را می‌آزارد، به Anthropic کمک کرد ثابت کند برنامهٔ دیجیتال‌سازی‌اش استفادهٔ منصفانه بوده است. خریدن، اسکن کردن و دور انداختن، در آن پرونده مسیری قانونی بود. گیوتین در اینجا ابزار انطباق با قانون است. خرید نسخه‌ها می‌تواند مشکل تملک را حل کند؛ اما به‌خودی‌خود به هیچ‌کس اجازه نمی‌دهد پیکرهٔ حاصل را به اشتراک بگذارد.&lt;/p&gt;
&lt;p&gt;دلایل خوبی هست برای اینکه بخواهیم هوش مصنوعی از زبان‌های بیشتر، از دانش بیشتر و از بخش بزرگ‌تری از جهانِ پیش از اینترنت بهره بگیرد. این دلایل از این رو که شرکتی که دوستش نداریم فرصتی تجاری در این کار یافته، دود نمی‌شوند.&lt;/p&gt;
&lt;h2 id="خشم-عاریتی"&gt;خشم عاریتی&lt;/h2&gt;
&lt;p&gt;پس به Daily Mail برگردیم. مقاله‌اش بخشی است از
، کارزاری از سوی مالکان روزنامه‌ها و ناشران که
برای هوش مصنوعی می‌خواهند. دو جایگزینی راحت، کار را پیش می‌برد: غول‌های فناوری به جای هوش مصنوعی می‌نشینند و صاحبان حقوق به جای خلاقیت بریتانیایی. از خوانندگان دعوت می‌شود از فرهنگ دفاع کنند، در حالی که ناشران بر سر شرایط فروش آن چانه می‌زنند. پژوهشگرانی که این خبر را دست‌به‌دست می‌کنند، خوب است بپرسند خشمشان در خدمت کدام آرمان است.&lt;/p&gt;
&lt;p&gt;غول‌های فناوری و
بر سر اجاره‌بها دعوا دارند، اما هیچ‌کدام با حصار مخالف نیستند. داستان نویسندهٔ تنهایی که غولی فناوری غارتش کرده، آنچه را که قراردادهای گران‌قیمت مجوز به هر دو اردوی شرکتی می‌بخشد پنهان می‌کند: ناشران پول می‌گیرند و غول‌های فناوری بازاری به دست می‌آورند که رقبای کوچک‌ترشان از عهدهٔ رقابت در آن برنمی‌آیند. پیتر تیل ترجیح سیلیکون‌ولی را بی‌پرده‌تر گفته است:
.&lt;/p&gt;
&lt;p&gt;مجوزدهی لزوماً به چنین نتیجه‌ای نمی‌انجامد. دسترسی ارزان و غیرانحصاری می‌تواند به توسعه‌دهندگان کوچک‌تر کمک کند. اما سامانه‌ای که هر تازه‌وارد را وادار می‌کند با صاحبان حقوق بزرگ قراردادهای پرهزینه ببندد، قدرت خرید را به شرط ورود بدل می‌کند. پرداختی که به‌عنوان امتیازی به صنایع فرهنگی عرضه می‌شود، در نهایت بیمه‌ای می‌خرد در برابر رقیبان آینده.&lt;/p&gt;
&lt;h2 id="هوش-مصنوعی-مال-غولهای-فناوری-نیست"&gt;هوش مصنوعی مال غول‌های فناوری نیست&lt;/h2&gt;
&lt;p&gt;مسئلهٔ عمیق‌تری هم در کار است. بخش بزرگی از نقد هوش مصنوعی، بزرگ‌ترین عرضه‌کنندگان تجاری‌اش را با تمام این حوزه یکی می‌گیرد. محصولات تیترها را پر می‌کنند؛ پژوهش و توسعه‌ای که بیرون از آن شرکت‌ها جریان دارد از نظر پنهان می‌ماند. غول‌های فناوری سوءتفاهمی مفیدتر از این نمی‌توانستند بخواهند. جاه‌طلبی‌شان برای تصاحب این حوزه، پیش‌فرضِ همان نقدی می‌شود که علیه‌شان می‌نویسند. انحصار هنوز قطعی نشده است. تمام‌شده انگاشتنش، لطف بزرگی است در حق این شرکت‌ها.&lt;/p&gt;
&lt;p&gt;هوش مصنوعی متن‌باز به مردم امکان می‌دهد سامانه‌هایی بسازند و سازگار کنند که تنوع بیشتری از زبان‌ها، فرهنگ‌ها و شکل‌های بیان را بازتاب می‌دهند. برای کشورهای اروپا، آفریقا و آمریکای لاتین، و نیز برای کرهٔ جنوبی، ژاپن و هند، این پایه‌ای عملی برای حاکمیت فناورانه و فرهنگی است: توانایی تصمیم گرفتن دربارهٔ اینکه سامانه‌ها چگونه کار کنند، به کدام زبان‌ها خدمت کنند و کجا به کار روند. اینکه از هوش مصنوعی استفاده بشود یا نه و برای چه، باید انتخابی عمومی بماند، نه تصمیمی که وابستگی به یک عرضه‌کنندهٔ خارجی دیکته می‌کند.&lt;/p&gt;
&lt;p&gt;اما آزادیِ تغییر دادن یک سامانه، بدون امکانات این کار، معنای چندانی ندارد. کار مستقل به تخصص، زیرساخت محاسباتی و دسترسی به مواد آموزشی نیاز دارد. و همین ما را به کتاب‌ها برمی‌گرداند. اگر هر گروه پژوهشی یا نهاد عمومی ناچار باشد خودش با ناشران قرارداد ببندد یا کتابخانهٔ خصوصی خودش را گرد آورد، استقلال همچنان امتیاز کسانی می‌ماند که از عهدهٔ هزینه‌اش برمی‌آیند.&lt;/p&gt;
&lt;h2 id="کتابها-همینجا-هستند"&gt;کتاب‌ها همین‌جا هستند&lt;/h2&gt;
&lt;p&gt;کتابخانه‌ها و آرشیوها نسل‌ها صرف گردآوری همان موادی کرده‌اند که این سامانه‌ها به آن نیاز دارند. مجموعه‌هایشان از آن رو وجود دارد که دسترسی به دانش باید از منفعت تجاریِ فروش آن بیشتر عمر کند. بخش زیادی هم پیش‌تر اسکن شده است:
نزدیک به نوزده میلیون جلد دیجیتال‌شده از کتابخانه‌های پژوهشی را در اختیار دارد که بسیاری‌شان هنوز مشمول حق نشرند. کتابخانه کتاب را اسکن می‌کند و نگهش می‌دارد. آنجا کسی به گیوتین نیازی ندارد. HathiTrust
، اما از
هم خبر داده است؛ پروژه‌ای برای فراهم کردن دسترسی به پیکره برای پژوهش و توسعهٔ غیرتجاری در هوش مصنوعی. دسترسی با این شرایط باز هم برخی توسعه‌دهندگان مستقل را بیرون در نگه می‌دارد.&lt;/p&gt;
&lt;p&gt;مالکیت کتاب‌ها اما به کتابخانه حق نمی‌دهد محتوای مشمول حق نشر آن‌ها را به‌صورت پیکرهٔ آموزشی توزیع کند.
به نهادهای پژوهشی و کتابخانه‌ها اجازه می‌دهد آثارِ قانوناً در دسترس را برای پژوهش علمی کاوش کنند، و کاوش گسترده‌تر را آنجا مجاز می‌داند که صاحبان حقوق حق خود را محفوظ نداشته‌اند.
: استثنای کاوش در آن به پژوهش غیرتجاری محدود است و انتقال نسخه‌ها را مقید می‌کند. هیچ‌یک از این دو چارچوب به کتابخانه‌ها حقی عام نمی‌دهد که موجودی مشمول حق نشرشان را برای ساخت‌وساز دیگران به اشتراک بگذارند.&lt;/p&gt;
&lt;p&gt;می‌توان در این هم بازنگری کرد که صاحبان حقوق تا چه مدت باید بر کاربردهای محاسباتی کتاب‌ها مسلط بمانند. پتنت‌های دارویی یک نقطهٔ مقایسه‌اند: دورهٔ معمول بیست‌سالهٔ آن‌ها بسیار کوتاه‌تر از حمایت حق نشر است که تمام عمر نویسنده و هفتاد سال پس از آن را در بر می‌گیرد. آیا نمی‌شود کتاب‌ها، مثلاً بیست سال پس از نخستین انتشار، بدون حق مجوز برای متن‌کاوی و داده‌کاوی در دسترس قرار گیرند، در حالی که حقوق بازنشر و فروش همچنان محفوظ بماند؟ پاسداری از حق نویسنده برای فروش کتابش لزوماً به معنای کنترل هر شیوهٔ استفاده از محتوای آن برای نسل‌ها نیست.&lt;/p&gt;
&lt;p&gt;دو سال پیش در
استدلال کردم که داده‌های میراث فرهنگی را باید کالایی عمومی دانست. دولت‌ها باید به کتابخانه‌ها و آرشیوها بودجه بدهند تا مجموعه‌هایشان را دیجیتال کنند، بازنویسی کنند و مستند سازند، و به آن‌ها اختیار قانونی بدهند که پیکره‌های حاصل را در اختیار دیگران بگذارند تا بر آن بنا کنند. غول‌های فناوری می‌توانند از طریق عوارضی اختصاصی بخشی از هزینه را بپردازند.&lt;/p&gt;
&lt;p&gt;بودجهٔ عمومی باید با سیاست‌های اعلام‌شدهٔ گردآوری و قواعد دسترسی همراه باشد که کار دانشگاهی و تجاری را بدون قرارداد انحصاری یا دسترسی ویژه برای اهداکنندگان پوشش دهد. دسترسی برای آموزش لزوماً به معنای بازتوزیع بی‌قید کتاب‌های مشمول حق نشر نیست. نویسندگان باید در طراحی این طرح عمومی سهیم باشند، از جمله در اینکه چگونه به رضایت، پاداش و رقابت با آثارشان می‌پردازد. دسترسی رایگان برای کاربران با پاداش نویسندگان از بودجهٔ عمومی منافاتی ندارد.
، که هر بار کتابی به امانت می‌رود از محل بودجهٔ عمومی به نویسنده می‌پردازد، یک پیشینه است. آتش هرگز اصل ماجرا نبود. حصار است.&lt;/p&gt;</description></item><item><title>سردبیران گرامی: اگر صدای مرا می‌خواهید، زبانم را به من پس بدهید</title><link>https://clementgodbarge.com/fa/post/dear-editors/</link><pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/fa/post/dear-editors/</guid><description>&lt;p&gt;روزی نیست که مجله‌ای سیاست تازه‌اش را دربارهٔ هوش مصنوعی جار نزند. این بار نوبت &lt;em&gt;Progress in Human Geography&lt;/em&gt; است؛ سردبیرانش
منتشر کرده‌اند و هشدار داده‌اند که هر کس هوش مصنوعی را جانشین خواندن و اندیشیدن و نوشتنِ خود کند، مرتکب «نقض اخلاق دانشگاهی، همانند سرقت ادبی» شده است. مقاله‌هایی که خاطی شناخته شوند «ممکن است پس گرفته شوند»؛ در بهترین حالت تصحیح می‌شوند و اطلاعیه‌ای در مجله چاپ می‌شود. سردبیران می‌افزایند که نویسندگان باید «به‌دقت بیندیشند که آیا می‌خواهند نامشان با پس‌گرفتن مقاله و اطلاعیه‌های تصحیح گره بخورد یا نه».&lt;/p&gt;
&lt;p&gt;این جمله را باید لحظه‌ای نگه داشت. سلب اعتبار مقاله در رأس مجازات‌های انتشارات دانشگاهی می‌نشیند؛ کیفری که معمولاً برای جعل داده و تقلب کنار گذاشته‌اند. اینجا اما به تخلفی چسبانده شده که همان سرمقاله از تعریفش ناتوان است. سردبیران خود اذعان می‌کنند که «مناطق خاکستری واقعی» وجود دارد و «هیچ خط روشنی قلمرو ‹بی‌مسئولیتی› را جدا نمی‌کند». اجرای سیاست بر «داوری‌های موردی» تکیه خواهد کرد «که شاید برخی نویسندگان را برنجاند؛ نویسندگانی که ادعا خواهند کرد استفادهٔ ناروایی از هوش مصنوعی نکرده‌اند»: به عبارت دیگر، اظهار خودِ نویسنده هم می‌تواند نادیده گرفته شود. سپس توصیه می‌کنند که «در قلمرو امنِ ‹مسئولیت›» بمانیم؛ و آدم فقط آنجا به احتیاط سفارش می‌کند که خطری در کار باشد. کیفر دادن مردم به جرم عبور از خطی که به اعتراف خودتان نمی‌توانید بکشید، تنها وقتی معنا دارد که هدف، حکم راندن با ترس باشد. این نکته را به خاطر بسپارید؛ به آن بازخواهیم گشت.&lt;/p&gt;
&lt;h2 id="بهانه-صدا"&gt;بهانهٔ صدا&lt;/h2&gt;
&lt;p&gt;استفادهٔ مسئولانه چه شکلی دارد؟ به نویسندگان می‌گویند: «باید بسیار مراقب بود&amp;hellip; تا صدای خود را حفظ کنند». سوءاستفاده یعنی روی آوردن به هوش مصنوعی «برای نوشتن به زبانی که نویسندگان خود هرگز در حالت عادی به کار نمی‌برند». برای یک انگلیسی‌زبانِ مادرزاد این حرف معقول است: وانمود نکن آنچه نیستی. اما برای بیگانه‌ای که ناچار است به زبانی جز زبان خود بنویسد، این فرمان خودش را نقض می‌کند. صدایی که این سیاست از آن پاسداری می‌کند، درست همان چیزی است که قواعد خودِ مجله از ما دریغ می‌دارد.&lt;/p&gt;
&lt;p&gt;مرا نمونهٔ آزمون بگیرید. انگلیسی زبان چهارم من است؛ دقیقاً از آن زبان‌هایی که هرگز «در حالت عادی» به کار نمی‌برم. دانشگاه‌های انگلیسی‌زبان مرا تربیت کردند تا آن را کوتاه، نشانه‌گذاری‌شده و تقریباً ماشینی بنویسم: جملهٔ موضوعی در آغاز بند، قیدهای احتیاط در جاهای مقرر، حروف ربط از فهرست مصوب. تربیت کارگر افتاد: در انگلیسیِ من هرگز صدایی نبوده که از آن پاسداری شود؛ صدا نخستین چیزی بود که باید کنار می‌رفت. بنا بر تعریف خودِ سردبیران، هر چه من به انگلیسی نوشته‌ام استفادهٔ ناروا بوده است، با ماشین یا بی ماشین.&lt;/p&gt;
&lt;h2 id="میان-دو-سنگ-آسیا"&gt;میان دو سنگ آسیا&lt;/h2&gt;
&lt;p&gt;سردبیران می‌گویند به فکر ما هم بوده‌اند: سیاست می‌پذیرد که ناانگلیسی‌زبانان از اینکه هوش مصنوعی انگلیسی‌شان را وارسی کند سود می‌برند، حتی از «خدمات ترجمه، نگارش و ویرایش» آن. با این حال، سهم هوش مصنوعی در نوشتن «باید حداکثر به کمک در ویرایش و نمونه‌خوانی محدود بماند» و نباید به «قطعه‌های بزرگی از متن نوشته‌شده به دست هوش مصنوعی» برسد. مقاله‌ای که ماشینی ترجمه شده، از نخستین واژه تا واپسین واژه نوشتهٔ هوش مصنوعی است؛ چیزی جز همین قطعه‌ها نیست. پس آن امتیاز فقط در صورتی پابرجاست که ترجمه کردن، نوشتن به شمار نیاید. این خط از کجا می‌گذرد؟ پیش‌تر خودشان گفته‌اند: «هیچ خط روشنی» در کار نیست.&lt;/p&gt;
&lt;p&gt;بدتر از این هم هست، چون این سوءظن تنها ابطال‌ناپذیر نیست؛ از همان آغاز یک‌سویه است. در سال 2023 گروهی از دانشگاه استنفورد هفت آشکارساز پرکاربرد هوش مصنوعی را روی مقاله‌هایی آزمودند که انسان‌ها نوشته بودند: آشکارسازها به‌طور میانگین 61% از انشاهای TOEFL ناانگلیسی‌زبانان را تولید ماشینی تشخیص دادند، حال آنکه انشاهای انگلیسی‌زبانان مادرزاد را تقریباً بی‌خطا طبقه‌بندی کردند؛ یکی از آشکارسازها 97.8% از مجموعهٔ TOEFL را برچسب زد (
). علت آموزنده است. آشکارسازها پیش‌بینی‌پذیری را می‌سنجند، و انگلیسیِ زبان دوم، که به سمت میانگین تربیت شده، بنا به ساختش پیش‌بینی‌پذیر است: محتمل‌ترین واژه در محتمل‌ترین ترتیب. همان پژوهش این نشانه را در نوشته‌های علمی واقعی هم یافت: تنوع زبانی کمتر در مقاله‌های کنفرانسی که نویسندهٔ نخستشان انگلیسی‌زبان مادرزاد نیست. نشانه‌های سبکی‌ای که «هوش مصنوعی» خوانده می‌شوند، همان نشانه‌های انگلیسیِ مسلطِ زبان‌دومی‌هاست؛ و داوری موردی یک انسان هم همان نشانه‌هایی را می‌خواند که ماشین می‌خواند. حلقه بسته می‌شود: انگلیسی خودم را بنویسم، شبیه ماشین می‌شوم؛ ماشین را به کار بگیرم، قاعدهٔ آنان را شکسته‌ام.&lt;/p&gt;
&lt;h2 id="مالیات-زبان"&gt;مالیات زبان&lt;/h2&gt;
&lt;p&gt;اگر پای تهدید در میان نبود، این تناقض بی‌آزار می‌ماند. اما تهدیدها پرده از مشکلی عمیق‌تر و کهنه‌تر برمی‌دارند که سیاست هرگز نامش را نمی‌برد: تک‌زبانگی.
«گسترده‌ترین پوشش بین‌المللی ممکن» را می‌خواهد و در همان صفحه می‌نویسد: «زبان مجله انگلیسی است.»&lt;/p&gt;
&lt;p&gt;هزینهٔ این ترتیب فرضی نیست. آمانو و همکارانش با نظرسنجی از 908 دانشمند محیط‌زیست دریافتند که ناانگلیسی‌زبانان برای نوشتن یک مقاله تا 51% زمان بیشتری صرف می‌کنند، مقاله‌شان 2.5 برابر بیشتر رد می‌شود و 12.5 برابر بیشتر از آنان بازنگری خواسته می‌شود، آن هم صرفاً به دلایل زبانی (
). این مالیات پیش از رسیدن هر سیاست هوش مصنوعی گرفته می‌شود؛ فرم اظهارنامه و تهدیدهایش، ممیزی‌ای است که روی آن سوار شده است.&lt;/p&gt;
&lt;h2 id="fin-dempire"&gt;Fin d’empire&lt;/h2&gt;
&lt;p&gt;تک‌زبانگی همان اصل موضوعه‌ای است که هیچ‌کس درباره‌اش بحث نمی‌کند. میراثی امپراتوری است که با گذر زمان توجیهی عملی هم پیدا کرد: ترجمه کند و گران بود، و هیچ هیئت تحریریه‌ای نمی‌توانست چیزی را که نمی‌خواند ارزیابی کند. ولی هیچ‌یک از این‌ها در برابر پیشرفت ترجمهٔ ماشینی دوام نمی‌آورد. پیشرفته‌ترین ترجمهٔ ماشینی می‌تواند لایه‌ای قابل اعتماد میان نویسندگان و سردبیران باشد.&lt;/p&gt;
&lt;p&gt;راه برون‌رفت آرمانی، انسانی است: پژوهشگران باید بیش از یک زبان بخوانند. دانشگاه‌های انگلیسی‌زبان اما ترجیح می‌دهند دانشکده‌های زبان‌های زنده را تعطیل کنند. توجه کنید که این تعطیلی‌ها پدیده‌ای انگلیسی–آمریکایی است: پژوهشگران جاهای دیگر هرگز تجمل تک‌زبانگی را نداشته‌اند. و به زمان‌بندی هم توجه کنید. تعطیل کردن یک دانشکدهٔ زبان یعنی شرط بستن بر اینکه انگلیسی برای همیشه پیروز شده و از این پس هیچ چیز خواندنی‌ای به زبان دیگری نوشته نخواهد شد. این شرط درست در بدترین لحظه بسته می‌شود، و از دو جهت. نخست از آن رو که ترجمهٔ ماشینی، برای نخستین بار، بی‌نیازی از زبان میانجی را ممکن می‌کند؛ دوم از آن رو که نظمی که انگلیسی را زبان پیش‌فرض کرده بود در حال عقب‌نشینی است: جهان انگلیسی‌زبان به درون خود می‌خزد، جهانی‌شدن فرو می‌نشیند، تجارت آزاد در زادگاه خودش زیر سؤال رفته و جهانی چندقطبی شکل می‌گیرد که در آن زبان‌های خواندنی چند برابر خواهند شد. دانشگاه‌ها پژوهشگرانی تربیت می‌کنند که فقط انگلیسی می‌خوانند، برای جهانی که در آن انگلیسی کافی نخواهد بود. نخستین وارثان این خسران، هیئت‌های تحریریه خواهند بود.&lt;/p&gt;
&lt;h2 id="آزمونی-برای-سردبیران"&gt;آزمونی برای سردبیران&lt;/h2&gt;
&lt;p&gt;وقتی هیئت تحریریه‌ای می‌نالد که نمی‌تواند صدای خودِ نویسندگانش را بشنود، شاید بخشی از مشکل در خودِ هیئت باشد.&lt;/p&gt;
&lt;p&gt;این اتهام سنگینی است و آزمونی به همان سنگینی با خود دارد. آیا &lt;em&gt;Progress in Human Geography&lt;/em&gt; مقاله‌ای را که به فرانسه، ایتالیایی یا ژاپنی نوشته شده و نسخه‌ای انگلیسیِ ماشینی‌ترجمه‌شده همراه دارد، به داوری می‌فرستد؟ راهنمای خودِ مجله خدمات «ترجمه»ای را که این کار را ممکن می‌کند به رسمیت شناخته است. پاسخ مثبت، مسئله را تمام می‌کند. پاسخ منفی به ما می‌گوید این سیاست در واقع از چه چیزی پاسداری می‌کند.&lt;/p&gt;
&lt;p&gt;به هر روی، انتخاب با سردبیران است. اگر صدا، چنان‌که مدعی‌اند، اهمیت دارد، مجله باید مقاله‌ها را به زبانی بپذیرد که نویسندگان به آن می‌اندیشند. اگر اهمیت ندارد، فرم اظهارنامه باید برود، و تهدیدها هم با آن.&lt;/p&gt;</description></item><item><title>جغرافیای ادراکی لِوانته</title><link>https://clementgodbarge.com/fa/post/levante/</link><pubDate>Sat, 29 Oct 2022 10:02:52 -0500</pubDate><guid>https://clementgodbarge.com/fa/post/levante/</guid><description>&lt;h1 id="مقدمه"&gt;مقدمه&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;لوانته&lt;/em&gt; جایی گریزپاست. چون معمولاً در نسبت با سرزمینی دیگر — یا در تقابل با آن — تعریف می‌شود، معنایش کمتر ثابت مانده و بسته به زمان و مکانِ کاربرد، جغرافیاهای متفاوتی را به ذهن آورده است. اما اگر تعریفی عینی و دقیق از این اصطلاح به‌دشواری به دست می‌آید، هنوز می‌توان امید داشت که نقشه‌ای ذهنی از آن منطقه ترسیم کرد، بر پایهٔ همبستگی‌هایی که در پیکره‌ای معین از متن‌ها وجود دارد. به بیان دیگر، &lt;em&gt;لوانته&lt;/em&gt; برای گروه خاصی از خوانندگان چه فضایی را تداعی می‌کرد؟&lt;br&gt;
در این یادداشت نشانتان می‌دهم که چگونه می‌توان با داده‌های
پروژهٔ آرشیو مدیچی
مکان‌های مشخصی را که این جای‌نام با آن‌ها همراه می‌شد به تصویر کشید.&lt;/p&gt;
&lt;h1 id="پایگاه-mia"&gt;پایگاه MIA&lt;/h1&gt;
&lt;p&gt;پایگاه MIA بستری مشارکتی است برای پژوهشگرانی که می‌خواهند عکس‌های خود از اسناد آرشیوی
را بارگذاری و به اشتراک بگذارند. در سال گذشته، و زیر چتر
، گروه ما هزاران سند از بخش &lt;em&gt;avvisi&lt;/em&gt; در فوند &lt;em&gt;Mediceo del Principato&lt;/em&gt; در فلورانس را عکس‌برداری، بازنویسی، خلاصه و دسته‌بندی کرده است. پایگاه ما در اصل برای تحلیل آماری ساخته نشده، اما فراداده‌هایی که در دسترس گذاشته‌ایم را همچنان می‌توان دانلود کرد و به‌عنوان مجموعه‌داده به کار برد.&lt;/p&gt;
&lt;h1 id="مجموعه-داده"&gt;مجموعهٔ داده&lt;/h1&gt;
&lt;p&gt;در این مورد، مجموعه‌داده‌ای که ساختم همهٔ اخبار &lt;em&gt;لوانته&lt;/em&gt; از 1543 تا 1566 را در بر می‌گیرد؛ یعنی از نخستین avviso ثبت‌شده در آرشیو تا سال مرگ سلطان
. این هم نمونه‌ای از داده‌هایی که از سرور استخراج کردم. داده‌ها سه ستون دارند: شمارهٔ یکتای سند، یک جای‌نام و یک تاریخ.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csv" data-lang="csv"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Malta / Europe / World / Top of the TGN hierarchy 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Modon / Messinias&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt; Nomos / Peloponnisos / Ellas 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Al-Iskandariyah / Muhafazat al Iskandariyah / Egypt / Africa 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Evvoia / Evvoias&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt; Nomos / Sterea Ellas-Evvoia / Ellas 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Venetian Republic / Italia / Europe / World 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Arsenale / Istanbul / Istanbul / Marmara 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Black Sea / Asia / World / Top of the TGN hierarchy 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Otranto / Lecce / Puglia / Italia 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Nisoi Aiyaiou / Ellas / Europe / World 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Malta / Europe / World / Top of the TGN hierarchy 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Buda / Budapest / Budapest / Magyarorszag 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Al-Iskandariyah / Muhafazat al Iskandariyah / Egypt / Africa 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Kipros / Asia / World / Top of the TGN hierarchy 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Rodhos / Rodos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt; Nisos / Sporadhes / Nisoi Aiyaiou 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Arsenale / Istanbul / Istanbul / Marmara 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Çorlu / Thraki / Ellas / Europe 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="پاکسازی-دادهها"&gt;پاک‌سازی داده‌ها&lt;/h2&gt;
&lt;p&gt;برای مصورسازی این داده‌ها باید آن‌ها را به‌صورت مجموعه‌داده‌ای csv (مقادیر جداشده با ویرگول) خوانا کنیم. همچنین باید اطلاعات جغرافیایی موجود در آن را به قالبی «ماشین‌پسندتر» برگردانیم: مختصات GPS. چون مجموعه‌داده صدها مدخل دارد، بهتر است این کار را خودکار کنیم. این کار را می‌توان نسبتاً سریع و با دقت خوبی با مدل‌های زبانی پیش‌آموخته‌ای مانند
،
یا
، و چند نمونهٔ دیگر، انجام داد. البته این عملیات باید زیر نظارت دقیق باشد، چون مدل‌های زبانی پیش‌آموخته اندکی به توهم گرایش دارند.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csv" data-lang="csv"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;latitude&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;longitude&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;documentDate&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;35.899167&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;14.514167&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;37.05&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;22.116667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;31.200028&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;29.918719&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;38.366667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;23.666667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;45.438333&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;12.331333&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;41.018611&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;28.984444&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;42.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;18.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;40.216667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;18.166667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;37.966667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;23.716667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;35.899167&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;14.514167&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;47.4925&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;19.051389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;31.200028&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;29.918719&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;34.916667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;33.616667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;36.405419&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;28.227778&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;41.018611&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;28.984444&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;41.133333&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;27.416667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="نقشه-چگالی"&gt;نقشهٔ چگالی.&lt;/h1&gt;
&lt;p&gt;نقشهٔ چگالی گونه‌ای مصورسازی است که بسامد یادکرد هر مکان را در مجموعه‌داده‌ای معین برجسته می‌کند. این نقشه به‌ویژه برای فهم نه‌فقط گسترهٔ جغرافیایی داده‌ها، بلکه کانون‌های آن‌ها سودمند است. کدام مکان‌های نقشه بیشتر یاد می‌شوند؟ و کدام‌ها گاه‌به‌گاه؟ مرکزها کجایند و پیرامون تا کجا می‌رود؟ توجه خواننده بیش از همه بر کدام نقطهٔ نقشه متمرکز می‌شود؟&lt;/p&gt;
&lt;iframe width='100%' height='600px' src="https://api.mapbox.com/styles/v1/clemclem/cl9q7c77p004y14mqytjrfnex.html?title=false&amp;access_token=pk.eyJ1IjoiY2xlbWNsZW0iLCJhIjoiY2lmbGpvbjMwZjh3NnJ5bHg4ZzkzeWZzeCJ9.IgOF4fphVbsWAIKyzAV-DQ&amp;zoomwheel=false#3.83/43.29/33.61" title="Levante" style="border:none;"&gt;&lt;/iframe&gt;
&lt;p&gt;برای این آزمایش — و چون عجله داشتم — از یکی از APIهای
استفاده کردم. اما بسیاری از کتابخانه‌های مصورسازی و سامانه‌های اطلاعات جغرافیایی همین نوع نقشهٔ چگالی را می‌سازند.&lt;/p&gt;
&lt;h1 id="چند-مشاهده"&gt;چند مشاهده&lt;/h1&gt;
&lt;p&gt;نتیجه بیش از آنکه بازنمایی دقیقِ مفهومی روشن و تعریف‌پذیر باشد، تابلویی امپرسیونیستی است، و همین دقیقاً چیزی است که در این آزمایش دوست دارم. راستش،
&lt;mark&gt;علم داده می‌تواند متحد نیرومندی برای علوم انسانی باشد، اما ما لزوماً ناچار نیستیم از قواعد آن پیروی کنیم.&lt;/mark&gt;
&lt;/p&gt;
&lt;p&gt;جنبهٔ جالب دیگر این آزمایش آن است که نقشه &lt;em&gt;لوانته&lt;/em&gt;ای را آشکار می‌کند که کاملاً با باقی اروپا و مدیترانه درآمیخته است. همچنین بر مرکزیت ادرنه در جغرافیای سیاسی امپراتوری عثمانی نور می‌اندازد. از این گذشته، مهم‌ترین شهر اسپانیا در این نقشه نه مادرید است و نه اسکوریال، بلکه ناپل است. و سرانجام، جزیره‌ها و دولت‌شهرهای کوچکی مانند راگوزا گویا نقش مهمی در میانجی‌گری میان قدرت‌های گوناگون منطقه داشته‌اند.&lt;/p&gt;
&lt;h1 id="چگونه-از-mia-داده-بگیریم"&gt;چگونه از MIA داده بگیریم&lt;/h1&gt;
&lt;p&gt;MIA ابزار مشارکتی برجسته‌ای برای پژوهشگران است، اما داده‌هایی که در سرورهایش نگه می‌دارد به‌آسانی در دسترس نیست. مثلاً بک‌اند آن در مخازن عمومی منتشر نشده است. با این حال، می‌توانید با ثبت‌نام در MIA و ارسال درخواست به سرور با python داده‌ها را به دست آورید.&lt;/p&gt;
&lt;h3 id="درخواست"&gt;درخواست&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://mia.medici.org/Mia/json/de/advancedsearch/advancedSearchResults/0/90/docYear/asc/?isNewsFeedSearch=False&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;archivalLocationSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;archivalLocationAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;repository&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;collection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Mediceo del Principato&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;series&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;volume&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;2863&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;insert&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;categoryAndTypologySearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;categoryAndTypologyAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;category&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;News&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;typology&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;transcriptionSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;transcriptionAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;transcription&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;synopsisSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;synopsisAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;synopsis&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;placesSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;placesAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;places&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:[]},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;peopleSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;peopleAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;people&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:[]},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;topicsSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;topicsAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;topics&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:[{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;topicTitle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Place Index&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;topicId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;51&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;placeAllId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}]},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateFilterType&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateYear&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateMonth&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateDay&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateBYear&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateBMonth&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateBDay&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;documentOwnerSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;documentOwnerAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;editType&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;owner&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;languagesSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;languagesAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;languages&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:[]}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Content-type&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;application/json&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Accept&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;*/*&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;LOGIN&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;PASSWORD&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;فراموش نکنید LOGIN و PASSWORD را با اطلاعات کاربری خودتان جایگزین کنید.&lt;/p&gt;
&lt;h3 id="نوشتن-پاسخ-در-فایل"&gt;نوشتن پاسخ در فایل&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;response.json&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;wb&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;fd&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;chunk&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iter_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chunk_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;fd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="باز-کردن-json"&gt;باز کردن JSON&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;response.json&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;encoding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;utf8&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="برگرداندن-شیء-json-بهصورت-دیکشنری"&gt;برگرداندن شیء JSON به‌صورت دیکشنری&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;json_complete&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="گزینش-دادهها-از-json-و-چاپ-آنها-در-قالب-csv"&gt;گزینش داده‌ها از JSON و چاپ آن‌ها در قالب CSV&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;results.csv&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;newline&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;csvfile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;fieldnames&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;documentId&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;placeCited&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;documentDate&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;writer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DictWriter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;csvfile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fieldnames&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;fieldnames&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;writer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;writeheader&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;json_complete&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;data&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;topics&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;topics&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;documentId&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;placeCited&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;topicPlaceName&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;date&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;docYear&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;date&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;docMonth&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;date&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;docDay&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;documentDate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;-&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;-&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;writer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;writerow&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;documentId&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;placeCited&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;placeCited&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;documentDate&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;documentDate&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;پس از دانلود فایل &lt;code&gt;results.csv&lt;/code&gt;، می‌توانید داده‌ها را به روشی که در بالا گفته شد پاک‌سازی کنید.&lt;/p&gt;</description></item><item><title>مصورسازی دست‌نویس‌ها 2 (به‌روزرسانی)</title><link>https://clementgodbarge.com/fa/post/treemap2/</link><pubDate>Sat, 20 Nov 2021 16:00:00 +0000</pubDate><guid>https://clementgodbarge.com/fa/post/treemap2/</guid><description>&lt;p&gt;چنان‌که وعده داده بودم، این هم نسخهٔ تازه‌ای از نقشهٔ درختی تعاملی‌ای که در
معرفی کردم؛ این بار با دو حالت نمایش.&lt;/p&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;نکته&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;برای تجربهٔ بهتر، مطمئن شوید که صفحه در حالت روشن (Light) است (روی نماد ماه در گوشهٔ بالا سمت راست کلیک کنید).&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;head&gt;
&lt;meta charset="UTF-8" /&gt;
&lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&gt;
&lt;title&gt;&lt;/title&gt;
&lt;link rel="preconnect" href="https://fonts.gstatic.com" /&gt;
&lt;link
href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&amp;display=swap"
rel="stylesheet"
/&gt;
&lt;link rel="stylesheet" href="css/index.css" /&gt;
&lt;link rel="stylesheet" href="css/vis-treemap.css" /&gt;
&lt;link rel="stylesheet" href="css/vis-tooltip.css" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class="stacked"&gt;
&lt;div class="switch"&gt;
&lt;input
type="checkbox"
name="group-by-category-switch"
id="group-by-category-switch"
checked
/&gt;
&lt;label for="group-by-category-switch"&gt; Group folios by category &lt;/label&gt;
&lt;/div&gt;
&lt;div id="treemap"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script src="https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js" integrity="sha384-CjloA8y00+1SDAUkjs099PVfnY2KmDC2BZnws9kh8D/lX1s46w6EPhpXdqMfjK6i" crossorigin="anonymous" referrerpolicy="no-referrer"&gt;&lt;/script&gt;
&lt;script src="js/vis-treemap.js"&gt;&lt;/script&gt;
&lt;script src="js/vis-tooltip.js"&gt;&lt;/script&gt;
&lt;script src="js/index.js"&gt;&lt;/script&gt;
&lt;/body&gt;</description></item><item><title>مرورگری دیداری برای آرشیو</title><link>https://clementgodbarge.com/fa/post/treemap/</link><pubDate>Sun, 20 Jun 2021 16:00:00 +0000</pubDate><guid>https://clementgodbarge.com/fa/post/treemap/</guid><description>&lt;h1 id="مسئله"&gt;مسئله&lt;/h1&gt;
&lt;p&gt;نسخه‌های دیجیتال گرفتار تناقضی‌اند: از یک سو اسناد دیریاب را در دسترس عموم می‌گذارند، و از سوی دیگر با از دست رفتن ورودی حسی‌ای که پیامد ماده‌زدایی آن‌هاست، خواننده را سردرگم و حتی از سر و کله زدن با محتوا دلسرد می‌کنند. پیمایش در مخازن عظیم اسناد را دشوار و هراس‌انگیز می‌سازند. این تنها دربارهٔ کاربرانی که با پژوهش آرشیوی آشنا نیستند صادق نیست؛ خوانندگان دچار اختلال‌های شناختی هم با آن روبه‌رویند.&lt;/p&gt;
&lt;h1 id="راه-حل"&gt;راه حل&lt;/h1&gt;
&lt;p&gt;اینجاست که فراداده‌های آرشیوی به کارمان می‌آیند. با این داده‌ها می‌توان انتزاع‌های دیداری تعاملی‌ای ساخت که ورودی حسی دیگری به خواننده می‌دهند و از این راه هم راحتیِ کار و هم دسترس‌پذیری را بالا می‌برند. برای اینکه آرشیو به‌صورت دیداری پیمایش‌پذیر شود، یک نقشهٔ درختی (treemap)، یا هر نموداری که داده‌های سلسله‌مراتبی را به‌خوبی تجزیه کند، کفایت می‌کند.&lt;/p&gt;
&lt;h1 id="آزمایش"&gt;آزمایش&lt;/h1&gt;
&lt;p&gt;نخستین آزمایش من
برای &lt;code&gt;D3.js&lt;/code&gt; را اقتباس می‌کند و به آن فراپیوند می‌افزاید. این نقشه دست‌نویس BnF Ms Fr 640، برگ‌هایش و مدخل‌های درون هر برگ را نمایش می‌دهد. رنگ‌ها نمایندهٔ مقولهٔ غالب‌اند. با نگه داشتن نشانگر روی هر مدخل، داده‌های بیشتری، از جمله پیوند به دست‌نویس، نمایان می‌شود.&lt;br&gt;
به این ترتیب نقشهٔ درختی به یک نمایهٔ دیداری تعاملی بدل می‌شود و در یک نگاه سریع و پاسخگو، نه‌تنها محتوای دست‌نویس، بلکه ابعاد هر برگ و هر مدخل را نیز به خواننده نشان می‌دهد.&lt;br&gt;
&lt;del&gt;در ماه‌های آینده این ایده را با نمودارها و سلسله‌مراتب‌های دیگر خواهم آزمود&amp;hellip; منتظر باشید!&lt;/del&gt; برای نسخهٔ تازهٔ نقشهٔ درختی
را کلیک کنید.&lt;/p&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;نکته&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;برای تجربهٔ بهتر، مطمئن شوید که صفحه در حالت روشن (Light) است (روی نماد ماه در گوشهٔ بالا سمت راست کلیک کنید).&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;head&gt;
&lt;meta charset="UTF-8" /&gt;
&lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&gt;
&lt;title&gt;&lt;/title&gt;
&lt;link rel="preconnect" href="https://fonts.gstatic.com" /&gt;
&lt;link
href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&amp;display=swap"
rel="stylesheet" /&gt;
&lt;link rel="stylesheet" href="css/index.css" /&gt;
&lt;link rel="stylesheet" href="css/vis-treemap.css" /&gt;
&lt;link rel="stylesheet" href="css/vis-tooltip.css" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;Click any cell to zoom in, or the top to zoom out.&lt;/p&gt;
&lt;div id="treemap"&gt;&lt;/div&gt;
&lt;script src="https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js" integrity="sha384-CjloA8y00+1SDAUkjs099PVfnY2KmDC2BZnws9kh8D/lX1s46w6EPhpXdqMfjK6i" crossorigin="anonymous" referrerpolicy="no-referrer"&gt;&lt;/script&gt;
&lt;script src="js/vis-treemap.js"&gt;&lt;/script&gt;
&lt;script src="js/vis-tooltip.js"&gt;&lt;/script&gt;
&lt;script src="js/index.js"&gt;&lt;/script&gt;
&lt;/body&gt;</description></item><item><title>آرشیو در یک نگاه</title><link>https://clementgodbarge.com/fa/post/dashboard/</link><pubDate>Mon, 24 May 2021 16:00:00 +0000</pubDate><guid>https://clementgodbarge.com/fa/post/dashboard/</guid><description>&lt;h1 id="مسئله"&gt;مسئله&lt;/h1&gt;
&lt;p&gt;آرشیوهای تاریخی می‌توانند به‌طرزی نومیدکننده آشفته باشند. فوند &lt;em&gt;Mediceo del Principato&lt;/em&gt; در
نمونهٔ گویایی است. تنها بخش کوچکی از آن فهرست‌برداری شده و بسیاری از اسنادش، بی‌هیچ دلیل روشنی، در بیش از 6,500 مجلد پراکنده‌اند. مشکل دیگر آنکه آرشیو تنها اجازهٔ مطالعهٔ شمار محدودی مجلد (یا به تعبیر خودشان &lt;em&gt;filza&lt;/em&gt;، جمع آن &lt;em&gt;filze&lt;/em&gt;) را می‌دهد. در روزگار عادی این سقف 4 بسته در روز است؛ در دوران همه‌گیری اما به 4 بسته در هر دو هفته رسیده است. در نبودِ فهرست‌های تفصیلی، حجم عظیم آرشیو پژوهشگر را ناگزیر می‌کند برای یافتن سریع اسناد مورد نظرش تدبیری بیندیشد.&lt;/p&gt;
&lt;h1 id="راه-حل"&gt;راه حل&lt;/h1&gt;
&lt;p&gt;برخی شانس را ترجیح می‌دهند؛ برخی دیگر می‌کوشند بر پایهٔ گاه‌شماری، گیرندگان، نویسندگان، خاستگاه فوند آرشیوی، زبان و مانند این‌ها حدس‌های سنجیده بزنند. اما &lt;em&gt;نگاه کردن&lt;/em&gt; به همهٔ این متغیرها در یک زمان می‌تواند الگوهای غیرمنتظره‌ای را در ساختار آرشیو آشکار کند و حدس‌های ما را دقیق‌تر سازد. تجربهٔ من نشان می‌دهد که فراداده‌هایی که پژوهشگران معمولاً در یک صفحه‌گسترده جمع می‌کنند، وقتی به نمودار درآیند، دید آدمی را نسبت به وضعیت آرشیو به‌طور چشمگیری بالا می‌برند.&lt;/p&gt;
&lt;h1 id="آزمایش"&gt;آزمایش&lt;/h1&gt;
&lt;p&gt;پژوهش کنونی من بر مکاتبات یک جاسوس سدهٔ شانزدهم متمرکز است. نامه‌هایش در صدها &lt;em&gt;filza&lt;/em&gt; پراکنده‌اند. با هویت‌های گوناگون نوشته شده‌اند، به گیرندگانی گوناگون و گاه غیرمنتظره، از مکان‌هایی گوناگون، و جز این‌ها. برای یافتن بسته‌هایی که به احتمال بیشتر نامه‌های مورد انتظار را در خود دارند، داشبوردی ساخته‌ام: یک برنامهٔ وبِ مصورسازی تعاملی داده‌ها (
) که همه‌گونه داده، از جمله اطلاعات جغرافیایی و گاه‌شمارانه، را به نموداری سلسله‌مراتبی (
) از فوند آرشیوی پیوند می‌دهد. داشبورد در یک نگاه به من می‌گوید تا کنون چه یافته شده، این یافته‌ها چه سهمی دارند، و تصویری تقریبی به دست می‌دهد از اینکه نامه‌های تازه را احتمالاً کجا باید جست. افزون بر این، با کلیک بر هر متغیر، همهٔ نمودارها به‌روز می‌شوند و همبستگی‌های خاصی را نشان می‌دهند.&lt;/p&gt;
&lt;h1 id="گامهای-بعدی"&gt;گام‌های بعدی&lt;/h1&gt;
&lt;p&gt;شاید مهم‌تر از همه، این داشبورد را می‌توان به یک نمایهٔ دیداری بدل کرد. وقتی تصحیح انتقادی این نامه‌ها به‌صورت آنلاین منتشر شود، داشبورد نقش دروازهٔ ورودی جایگزینی را خواهد داشت که خوانندگان از آنجا می‌توانند داده‌ها را مرور کنند. به دلایل محرمانگی، در حال حاضر تنها می‌توانم تصویری از آن نشان دهم که بخش‌هایی‌اش پوشانده شده، اما داشبورد کامل را سال آینده منتشر خواهم کرد. در این میان، نمونهٔ اولیه‌ای به‌زودی در دسترس خواهد بود. منتظر باشید!&lt;/p&gt;</description></item><item><title>مصورسازی نشانه‌گذاری معنایی در BnF Ms. Fr. 640</title><link>https://clementgodbarge.com/fa/post/visualization/</link><pubDate>Sun, 20 Dec 2020 18:15:00 +0000</pubDate><guid>https://clementgodbarge.com/fa/post/visualization/</guid><description>&lt;h1 id="نگاه-کلی"&gt;نگاه کلی&lt;/h1&gt;
&lt;p&gt;نسخه‌های علمیِ غنی از داده، حاشیه‌نویسی‌های ارزشمندی دارند که می‌توان برای هر گونه هدف پژوهشی استخراج، تحلیل و مصورسازی‌شان کرد.
، که در 2020 منتشر شد و فایل فراداده‌اش را در مخزن GitHub خود برای دانلود گذاشته، از همین دست است. در این یادداشت نشان می‌دهم چگونه می‌توان همهٔ این متغیرها را در یک ماتریس همبستگی گرد آورد و به شیوه‌های گوناگون به تصویر کشید.&lt;/p&gt;
&lt;h1 id="دادهها"&gt;داده‌ها&lt;/h1&gt;
&lt;p&gt;پروژهٔ Making and Knowing صفحه‌گسترده‌ای با اطلاعات به‌روز دربارهٔ محتوای دست‌نویس تولید می‌کند: &lt;code&gt;entry_metadata.csv&lt;/code&gt;. این فایل را می‌توان از
پروژهٔ Making &amp;amp; Knowing گرفت. راه دیگر آن است که به لطف
عالیِ Matthew Kumar، که نسخه‌ای پایتونی از BnF Ms. Fr. 640 است، فایل‌های .csv سفارشی با نشانه‌گذاری بیشتر تولید کنید.&lt;/p&gt;
&lt;h2 id="آماده-کردن-python"&gt;آماده کردن Python&lt;/h2&gt;
&lt;p&gt;از Pandas برای سر و سامان دادن به داده‌ها، از Matplotlib و seaborn برای نقشه‌های حرارتی، و سرانجام از NetworkX برای ساختن شبکه‌های مبتنی بر همبستگی استفاده می‌کنیم.&lt;br&gt;
برای این نوع متغیرها از روش پیرسون پرهیز می‌کنیم و به جای آن روش 𝜙𝐾 را به کار می‌بریم. حتماً
: هم دربارهٔ این روش همبستگی و هم دربارهٔ &lt;code&gt;PhiK&lt;/code&gt;، کتابخانهٔ متناظر با آن.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#install packages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;phik&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# import modules&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;pd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;plt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;seaborn&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;sns&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;networkx&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;nx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="آمادهسازی-دادهها"&gt;آماده‌سازی داده‌ها&lt;/h2&gt;
&lt;p&gt;نخست، تازه‌ترین فایل فرادادهٔ نسخه را از پوشهٔ metadata در
آن دانلود می‌کنیم.
فقط ستون‌هایی را که لازم داریم برمی‌گزینیم. برای این نمایش، همهٔ برچسب‌های معنایی ترجمهٔ انگلیسی &lt;code&gt;tl&lt;/code&gt; را انتخاب می‌کنم، اما می‌توانید برچسب‌های بازنویسی فرانسوی &lt;code&gt;tc&lt;/code&gt; یا نسخهٔ هنجارشدهٔ &lt;code&gt;tcn&lt;/code&gt; را هم برگزینید.
داده‌ها به‌صورت مقادیر جداشده با نقطه‌ویرگول می‌آیند و باید Python آن‌ها را برایمان بشمارد. برای این کار از روش stack-unstack با عبارت باقاعدهٔ &lt;code&gt;[^;\s][^\;]*[^;\s]*&lt;/code&gt; استفاده می‌کنیم.
برای خواناتر شدن ماتریس، نام هر ستون را تغییر می‌دهیم. اگر عجله دارید می‌توانید از این گام بگذرید؛ فقط به یاد داشته باشید که دیتافریم ما در این مرحله &lt;code&gt;tagsrn&lt;/code&gt; نام دارد.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# load the edition&amp;#39;s metadata&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;entry_metadata.csv&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# select the tags you want to correlate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dftags&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;al_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;bp_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;cn_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;df_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;env_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;m_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;md_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;ms_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;mu_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pa_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pl_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pn_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pro_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sn_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tl_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tmp_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;wp_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;de_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;el_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;it_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;la_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;oc_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;po_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# count comma separated values&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tagcount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dftags&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dropna&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;[^;\s][^\;]*[^;\s]*&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;unstack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# rename columns&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tagsrn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tagcount&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;al_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;animals&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;bp_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;body parts&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;cn_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;currency&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;df_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;definitions&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;env_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;environment&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;m_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;material&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;md_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;medical&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;ms_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;measurement&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;mu_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;music&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pa_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;plant&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pl_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;toponym&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pn_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;person&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pro_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;profession&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sn_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sensory&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tl_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tool&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tmp_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;temporal&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;wp_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;weapons&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;de_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;German&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;el_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Greek&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;it_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Italian&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;la_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Italian&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;oc_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Occitan&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;po_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Poitevin&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="همبسته-کردن"&gt;همبسته کردن&lt;/h1&gt;
&lt;p&gt;وقتی دیتافریم پاک شد، می‌توانیم ضرایب همبستگی میان متغیرها را حساب کنیم. در این مرحله مهم است که داده‌هایتان را بشناسید و مطمئن شوید مناسب‌ترین روش همبستگی را به کار می‌برید. بستهٔ &lt;code&gt;pandas-profiling&lt;/code&gt; برای این کار به‌ویژه سودمند است.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# calculate correlation coefficient with the phi k method&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cortag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tagsrn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;phik_matrix&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;cortag&lt;/code&gt; ماتریس همبستگی ماست. حالا می‌توانیم انواع مختلف مصورسازی را بیازماییم.&lt;/p&gt;
&lt;h1 id="مصورسازی"&gt;مصورسازی&lt;/h1&gt;
&lt;p&gt;نخستین کاری که می‌توان کرد این است که آن را به‌صورت ماتریسی رنگ‌کدشده، با
کتابخانهٔ &lt;code&gt;seaborn&lt;/code&gt;، به تصویر بکشیم.&lt;/p&gt;
&lt;h3 id="نقشه-حرارتی-همبستگی"&gt;نقشهٔ حرارتی همبستگی&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subplots&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;heatmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cortag&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;linewidths&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;.03&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;vmin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cmap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Oranges&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;square&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="نقشهٔ حرارتی همبستگی BnF Ms. Fr. 640"
srcset="https://clementgodbarge.com/post/visualization/heatmap_hu_943abdd98e24b0a3.webp 320w, https://clementgodbarge.com/post/visualization/heatmap_hu_eca41311a0e0ac17.webp 480w, https://clementgodbarge.com/post/visualization/heatmap_hu_1650defb643c0285.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://clementgodbarge.com/post/visualization/heatmap_hu_943abdd98e24b0a3.webp"
width="760"
height="665"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;اگر متن را خوب بشناسید، بی‌درنگ می‌بینید که نقشهٔ حرارتی کاملاً معنادار است. برای نمونه، نام‌ها همبستگی نیرومندی با لاتین دارند، چون رسم بود، به‌ویژه میان اومانیست‌های سدهٔ شانزدهم، که نام‌ها را لاتینی کنند.&lt;/p&gt;
&lt;p&gt;برخی شاید بگویند این نقشهٔ حرارتی فقط بدیهیات را بازگو می‌کند. یکسره بی‌راه نمی‌گویند، و در نگاه نخست برچسب‌های پزشکی نمونهٔ خوبی به نظر می‌رسند، چون همان‌طور که انتظار می‌رود با اندام‌های بدن، اندازه‌ها و گیاهان همبسته‌اند.&lt;/p&gt;
&lt;p&gt;اما اگر نقشهٔ حرارتی را با دقت بیشتر، سطر به سطر بخوانیم، ممکن است همبستگی‌های جالب و غیرمنتظره‌ای بیابیم. اینکه برچسب‌های پزشکی مثلاً با واژه‌های ایتالیایی و لاتین همبسته‌اند، سرنخ‌هایی دربارهٔ خاستگاه نسخه‌های پزشکی Ms. Fr. 640 به دست می‌دهد. به همین ترتیب، همبستگی میان پیشه‌ها، تعریف‌ها و اندازه‌ها نشان می‌دهد که هویت حرفه‌ای تا چه اندازه به گفتمان‌های فنی سدهٔ شانزدهم ساختار می‌بخشد.&lt;/p&gt;
&lt;h3 id="نقشه-خوشهای-همبستگی"&gt;نقشهٔ خوشه‌ای همبستگی&lt;/h3&gt;
&lt;p&gt;نقشه‌های حرارتی در زمینه‌های «اکتشافی» سودمندند، اما ممکن است در چشم مخاطب کمی شلوغ بنمایند، به‌ویژه اگر دربارهٔ خوشه‌های معنایی خاصی در دست‌نویس بحث می‌کنید — یا هنوز در جست‌وجوی آن‌ها هستید. پیمانهٔ &lt;code&gt;clustermap&lt;/code&gt; کتابخانهٔ Seaborn می‌تواند نتایج جالبی بدهد.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;clustermap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clustermap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cortag&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;dendrogram_ratio&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;vmin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cmap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Oranges&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cbar_pos&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;.06&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;.12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;.03&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;.68&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="نقشهٔ خوشه‌ای همبستگی BnF Ms. Fr. 640"
srcset="https://clementgodbarge.com/post/visualization/clustermap_hu_677e6e5028f9d902.webp 320w, https://clementgodbarge.com/post/visualization/clustermap_hu_2dac945fa40a8ac6.webp 480w, https://clementgodbarge.com/post/visualization/clustermap_hu_3abaf7b36a53572.webp 753w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://clementgodbarge.com/post/visualization/clustermap_hu_677e6e5028f9d902.webp"
width="753"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;نقشهٔ خوشه‌ای، گذشته از اینکه شبیه حشره‌ای پیکسلی (بله، این واژه در OED هست) به نظر می‌رسد، برچسب‌های منزوی (در بالا و سمت چپ) را از برچسب‌های به‌هم‌پیوسته‌تر به‌روشنی جدا می‌کند. خوشه‌های منزوی، مانند موسیقی و پواتوینی (که فکرش را می‌کرد!)، را نیز از خوشه‌های مرکزی‌تر مانند اندازه، ماده، تعریف و سلاح تشخیص می‌دهیم. پیشه‌ها پیوندهای بیشتری دارند، اما دست‌کم در این ماتریس همبستگی خاص، جزو خوشهٔ مشخصی نیستند.&lt;/p&gt;
&lt;h3 id="شبکه-همبستگی"&gt;شبکهٔ همبستگی&lt;/h3&gt;
&lt;p&gt;اگر بخواهیم همبستگی‌های ماتریس را باز هم فشرده‌تر کنیم، گراف‌های شبکه راه حلی ظریف‌اند. این به‌ویژه در زمینه‌هایی صادق است که می‌خواهیم دربارهٔ محتوای دست‌نویس با دیگران سخن بگوییم.&lt;br&gt;
برای این کار باید ماتریس را به فهرستی از یال‌ها و گره‌ها تبدیل کنیم و آستانه‌ای تعیین کنیم تا همبستگی‌های ضعیف‌تر از گراف حذف شوند.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# transform the data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;links&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cortag&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reset_index&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;columns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;var1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;var2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;value&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# threshold &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;links_filtered&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;value&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;.6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;var1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;var2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;links_filtered&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# create edges&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;G&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;from_pandas_edgelist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;links_filtered&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;var1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;var2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# draw network using Kamada &amp;amp; Kawai&amp;#39;s algorithm &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;figure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;figsize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;draw_kamada_kawai&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;G&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;with_labels&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;node_color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;red&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;node_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;edge_color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;black&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;linewidths&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;font_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="گراف همبستگی BnF Ms. Fr. 640"
srcset="https://clementgodbarge.com/post/visualization/graph_hu_396032c00cb7f7f3.webp 320w, https://clementgodbarge.com/post/visualization/graph_hu_85295e5fba6293bc.webp 480w, https://clementgodbarge.com/post/visualization/graph_hu_4190dbca7e86ffc1.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://clementgodbarge.com/post/visualization/graph_hu_396032c00cb7f7f3.webp"
width="760"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;اگر یال‌ها و گره‌ها زیادند، می‌توانید آستانه را تغییر دهید تا نتیجهٔ تمیزتری بگیرید. در غیر این صورت، می‌توانید گراف را با تابع &lt;code&gt;.write_gexf()&lt;/code&gt; صادر کنید و در &lt;code&gt;Gephi&lt;/code&gt; با آن کار کنید.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write_gexf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;G&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;graph.gexf&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;نتیجه را می‌توانید در آغاز این یادداشت ببینید.&lt;/p&gt;
&lt;h3 id="بهروزرسانی-شبکه-وزندار-دایرهای"&gt;به‌روزرسانی: شبکهٔ وزن‌دار دایره‌ای&lt;/h3&gt;
&lt;p&gt;دنبال راه‌هایی بودم برای نمایش ماتریس‌های همبستگی به‌صورت شبکه‌های وزن‌دار، و این رویکرد جالب را یافتم که
و من آن را اینجا برای مجموعه‌دادهٔ خودمان اقتباس می‌کنم.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# create graph weighted by correlation coefficients (unfiltered)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Gx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;from_pandas_edgelist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;var1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;var2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;edge_attr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;value&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# determine a threshold to remove some edges&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;threshold&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# list to store edges to remove&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;remove&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# loop through edges in Gx and find correlations which are below the threshold&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;var1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;var2&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;Gx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;edges&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;corr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gx&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;var1&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;var2&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;value&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#add to remove node list if abs(corr) &amp;lt; threshold&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;corr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;threshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;remove&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;var1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;var2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# remove edges contained in the remove list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Gx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;remove_edges_from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39; edges removed&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;پس از حذف چند یال، می‌توانیم رنگ و ضخامت آن‌ها را تعیین کنیم.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# determine the colors of edges&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;assign_colour&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;correlation&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;correlation&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;#ff872c&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# orange&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;#f11d28&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# red&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;assign_thickness&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;correlation&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;benchmark_thickness&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scaling_factor&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;benchmark_thickness&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nb"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;correlation&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;scaling_factor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;assign_node_size&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;degree&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scaling_factor&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;degree&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;scaling_factor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;به گره‌ها هم اندازه‌ای متناسب با شمار پیوندهایشان می‌دهیم.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# assign node size depending on number of connections (degree)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;node_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Gx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;degree&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;node_size&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;assign_node_size&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;نتیجه گرافی وزن‌دار است که گره‌های بیشتر و یال‌های به‌مراتب بیشتری را می‌پذیرد و در عین حال خوانا و پرمایه می‌ماند.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="گراف همبستگی وزن‌دار BnF Ms. Fr. 640"
srcset="https://clementgodbarge.com/post/visualization/weightedgraph_hu_7b75f2e5fc7edb1b.webp 320w, https://clementgodbarge.com/post/visualization/weightedgraph_hu_9f0550eb49c17f11.webp 480w, https://clementgodbarge.com/post/visualization/weightedgraph_hu_a9106989817361fb.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://clementgodbarge.com/post/visualization/weightedgraph_hu_7b75f2e5fc7edb1b.webp"
width="760"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item></channel></rss>