برنامه نویسی

مطالعه سوپرشارژ با Anki، ChatGPT و Python

در مورد چگونگی استفاده از ChatGPT توسط دانش آموزان برای تقلب بسیار بحث شده است، اما به سختی می توان گفت که چقدر می تواند یک ابزار مطالعه فوق العاده باشد. در این مقاله به نحوه آموزش ChatGPT می پردازیم تا لیستی از اطلاعاتی که باید به خاطر بسپارند به ما ارائه دهد، که سپس به عنوان ورودی در یک برنامه پایتون استفاده می شود که یک بسته Anki را خروجی می دهد و سپس در Anki بارگذاری می کنیم. برای کمک به یادآوری مفاهیم از طریق محرک های حافظه.

Anki یک برنامه فلش کارت منبع باز قدرتمند است که به کاربران کمک می کند تا با استفاده از تکرار فاصله دار اطلاعات را به طور موثرتری به خاطر بسپارند. این برنامه در چندین پلتفرم از جمله Windows، macOS، Linux، iOS و Android در دسترس است. Anki به کاربران این امکان را می دهد که دسته فلش کارت های خود را شامل متن، تصاویر، صدا و حتی معادلات LaTeX بسازند.

ما نحوه ایجاد کارت های Anki را به صورت برنامه نویسی با استفاده از Python و کتابخانه Genanki نشان خواهیم داد. ما یک Deck Anki برای یادگیری دایرکتوری های سیستم فایل لینوکس و توضیحات آنها ایجاد خواهیم کرد. عرشه شامل کارت های نوع اصلی و معکوس برای هر دایرکتوری است.

یادگیری نحوه استفاده صحیح از Anki به خودی خود یک مهارت است. اگر تا به حال نام آن را نشنیده اید، این یک نرم افزار تکراری است که می تواند به شما کمک کند اطلاعات مرتبط را به خاطر بسپارید. این یک ویدیوی خوب برای شروع است. در این برنامه از مفاهیم مدل های Anki، کارت ها، یادداشت ها، عرشه ها و بسته ها برای ایجاد مجموعه کارت خود استفاده خواهیم کرد.

  1. مدل های آنکی: یک مدل Anki که به عنوان یک نوع یادداشت نیز شناخته می شود، ساختار و چیدمان مجموعه ای از کارت ها را تعریف می کند. هر مدل از مجموعه ای از فیلدها تشکیل شده است که اطلاعاتی را که باید آموخته شود ذخیره می کند و مجموعه ای از الگوهای کارت که نحوه نمایش آن اطلاعات بر روی کارت ها را تعیین می کند. مدل‌ها به کاربران اجازه می‌دهند انواع مختلف کارت‌ها و طرح‌بندی‌ها را برای نیازهای آموزشی مختلف، مانند کارت‌های اولیه، کارت‌های معکوس، و کارت‌های حذف بسته ایجاد کنند.

  2. کارت های آنکی: کارت Anki یک فلش کارت دیجیتال حاوی اطلاعاتی است که باید یاد بگیرید. هر کارت دارای یک سمت جلو است که معمولاً حاوی یک سؤال یا یک پیام است و یک سمت پشتی که حاوی پاسخ یا اطلاعات اضافی مربوط به قسمت جلو است. کارت های Anki می توانند شامل متن، تصاویر، صدا و حتی معادلات لاتک باشند. کارت‌ها از مدل‌ها و فیلدهای مرتبط با آن‌ها تولید می‌شوند که محتوا و چیدمان کارت‌ها را تعیین می‌کنند.

  3. یادداشت های آنکی: یادداشت Anki یک تکه اطلاعات است که برای تولید یک یا چند فلش کارت یا کارت Anki استفاده می شود. هر یادداشت بر اساس یک مدل خاص (همچنین به عنوان یک نوع یادداشت شناخته می‌شود) است که ساختار، طرح‌بندی و فیلدهای آن یادداشت را مشخص می‌کند. فیلدها محتوای واقعی یادداشت، مانند سؤالات، پاسخ‌ها یا درخواست‌ها را ذخیره می‌کنند، در حالی که مدل تعیین می‌کند که چگونه آن محتوا در کارت‌های تولید شده نمایش داده شود.

  4. آنکی دکس: عرشه Anki مجموعه ای از کارت ها در یک موضوع یا موضوع خاص است. از عرشه ها برای سازماندهی کارت ها در گروه های معنادار استفاده می شود و تمرکز کاربران را بر روی یک منطقه خاص از مطالعه آسان تر می کند. Anki به کاربران اجازه می دهد تا دک های خود را ایجاد و سفارشی کنند، که می توانند با دیگران به اشتراک گذاشته شوند، وارد یا صادر شوند. کاربران می توانند بسته به اهداف و ترجیحات یادگیری خود، یک عرشه را در یک زمان یا چندین عرشه را به طور همزمان مطالعه کنند.

  5. بسته های Anki: بسته Anki یک فایل منفرد حاوی یک یا چند عرشه به همراه کارت‌ها، مدل‌ها، فایل‌های رسانه‌ای و سایر داده‌های مرتبط است. بسته های Anki دارای پسوند فایل “.apkg” هستند و به راحتی می توان آنها را بین کاربران و دستگاه ها به اشتراک گذاشت، وارد کرد یا صادر کرد. بسته‌های Anki راهی مناسب برای توزیع دک‌ها و محتوای مرتبط هستند، زیرا تمام اطلاعات لازم را در یک فایل واحد جمع‌آوری می‌کنند. هنگام وارد کردن یک بسته Anki، دسته‌ها، کارت‌ها و مدل‌های موجود در آن به مجموعه موجود کاربر اضافه می‌شوند.

ChatGPT را می توان به عنوان یک گوگل انسان نما دید. این کار را برای شما انجام نمی دهد و مطمئناً فکر کردن را برای شما انجام نمی دهد. با این حال، اگر می‌دانید چگونه سؤالات خود را بیان کنید، می‌تواند پاسخ‌های بسیار خوبی به شما بدهد، و در قالبی که می‌خواهید باشد، که درج این پاسخ‌ها را در یک برنامه بسیار آسان‌تر می‌کند.

در این مثال، من قصد دارم یک سوال در مورد سیستم فایل لینوکس بپرسم، انتظار دارم که پاسخ لیستی از دایرکتوری های قابل دسترسی از پوشه ریشه باشد، با توضیح دلیل وجود آنها. اگر پاسخ مورد نظر شما را نمی دهد، به یاد داشته باشید که دقیق تر باشید.

پاسخ GPT چت در سیستم فایل لینوکس

این یک اسکرین شات جزئی است، پاسخ به 14 می رسد /var دایرکتوری مورد استفاده برای ذخیره فایل های داده سیال که قرار است در طول یک جلسه استفاده از سیستم تغییر کنند، و آخرین مورد به ترتیب حروف الفبا.

تا اینجای کار خیلی خوبه. اما اگر بخواهیم این اطلاعات را در برنامه ای وارد کنیم، باید آن را فرمت کنیم. این چیزی است که Chat GPT در آن می درخشد. اگر مثلاً یک پاراگراف را به‌عنوان پاسخ دریافت کردید، می‌توانید فقط از ربات بخواهید که آن را به‌عنوان یک فهرست مرتب‌شده بازنویسی کند، و سپس از آن بخواهید که هر مورد را به‌عنوان آرایه‌ای از چند تایی ارسال کند. در اینجا یک مثال بر اساس آخرین پاسخ آورده شده است:

توضیحات تصویر

به یاد داشته باشید که همیشه پاسخ ها را قبل از آپلود در Anki مرور کنید، زیرا اطلاعات برگشتی را به مغز خود چکش خواهید کرد. شما نمی خواهید در طول تحصیلتان در جمع آوری دانش خود خرابکاری کنید.

فعلا همین کافی است، بریم سراغ کدنویسی.

برای شروع، باید آن را نصب کنید genanki کتابخانه، که یک کتابخانه پایتون برای ایجاد دک ها و کارت های Anki به صورت برنامه ای است. می توانید با استفاده از آن نصب کنید pip:

pip install genanki
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون که ما آن را داریم genanki کتابخانه نصب شده است، بیایید یک اسکریپت پایتون ایجاد کنیم که کارت های Anki و دک دایرکتوری های سیستم فایل لینوکس را تولید می کند.

آماده سازی

در اینجا کتابخانه را وارد کرده و پاسخ ChatGPT را جایگذاری می کنیم. به زودی به عنوان پارامتری برای توابع ارائه شده توسط استفاده می شود genanki.

import genanki

# List of Linux directories and their descriptions
linux_dirs = [
    ("https://dev.to/", 'Root directory, starting point of the filesystem hierarchy.'),
    ('/bin', 'Contains essential system command executables.'),
    ('/sbin', 'Contains essential system administration command executables.'),
    ('/boot', 'Contains files needed to start the boot process.'),
    ('/etc', "Contains system-wide configuration files and scripts."),
    ('/dev', 'Contains device files representing hardware devices.'),
    ('/home', 'Contains personal directories for each user.'),
    ('/lib', 'Contains shared libraries and kernel modules.'),
    ('/opt', 'Optional directory for storing third-party software.'),
    ('/proc', 'Virtual filesystem providing an interface to kernel internal data structures.'),
    ('/sys', 'Virtual filesystem providing an interface to kernel internal data structures for devices, drivers, and other components.'),
    ('/tmp', 'Temporary directory for storing files deleted after a system reboot.'),
    ('/usr', 'Contains user-related files, shared libraries, header files, documentation, and non-essential software binaries.'),
    ('/var', 'Contains variable data files, such as logs, databases, and mail spools.'),
]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا باید یک شناسه مدل برای کارت هایی که می سازیم ایجاد کنیم، که باید منحصر به فرد باشد. همچنین باید یک نام به مدل خود بدهید، فیلدهایی را ایجاد کنید تا با محتوا پر شود و سپس با استفاده از این فیلدها یک الگو برای یادداشت خود اعلام کنید. به یاد داشته باشید که یک یادداشت اساساً فرمی برای کارت های مرتبط با آن یادداشت است و ما دو کارت برای هر یادداشت خواهیم داشت زیرا نام دایرکتوری یک محرک حافظه برای توضیحات دایرکتوری است و بالعکس.

# Define Anki note model
model_id = 1607392319
model = genanki.Model(
    model_id,
    'Linux filesystem folders',
    fields=[
        {'name': 'Directory'},
        {'name': 'Description'},
    ],
    templates=[
        {
            'name': 'Card 1',
            'qfmt': '{{Directory}}',
            'afmt': '{{Description}}',
        },
        {
            'name': 'Card 2',
            'qfmt': '{{Description}}',
            'afmt': '{{Directory}}',
        },
    ])
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در نهایت عرشه را ایجاد می کنیم و به آن شناسه می دهیم (که حدس زدید باید منحصر به فرد باشد) و همچنین به آن یک نام می دهیم. سپس لیست تاپل ها را تکرار می کنیم و برای هر تاپل یک یادداشت ایجاد می کنیم، مدل یادداشت را اعلام می کنیم و محتوای خود را به عنوان فیلد وارد می کنیم (به ترتیب ‘Directory’ و ‘Description’).
ما در نهایت بسته ای می نویسیم که شامل تک عرشه ما باشد. اگر نصب Anki دارید، کافیست روی فایل تولید شده دوبار کلیک کنید تا در برنامه آماده مطالعه باز شود.

# Generate Anki cards and add them to a deck
deck_id = 2059400110
deck = genanki.Deck(deck_id, 'Linux Filesystem')

for dir_name, description in linux_dirs:
    note = genanki.Note(model=model, fields=[dir_name, description])
    deck.add_note(note)

# Save the deck to an Anki package (*.apkg) file
genanki.Package(deck).write_to_file('linux_filesystem.apkg')
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

import genanki

# List of Linux directories and their descriptions
linux_dirs = [
    ("https://dev.to/", 'Root directory, starting point of the filesystem hierarchy.'),
    ('/bin', 'Contains essential system command executables.'),
    ('/sbin', 'Contains essential system administration command executables.'),
    ('/boot', 'Contains files needed to start the boot process.'),
    ('/etc', "Contains system-wide configuration files and scripts."),
    ('/dev', 'Contains device files representing hardware devices.'),
    ('/home', 'Contains personal directories for each user.'),
    ('/lib', 'Contains shared libraries and kernel modules.'),
    ('/opt', 'Optional directory for storing third-party software.'),
    ('/proc', 'Virtual filesystem providing an interface to kernel internal data structures.'),
    ('/sys', 'Virtual filesystem providing an interface to kernel internal data structures for devices, drivers, and other components.'),
    ('/tmp', 'Temporary directory for storing files deleted after a system reboot.'),
    ('/usr', 'Contains user-related files, shared libraries, header files, documentation, and non-essential software binaries.'),
    ('/var', 'Contains variable data files, such as logs, databases, and mail spools.'),
]

# Define Anki note model
model_id = 1607392319
model = genanki.Model(
    model_id,
    'Simple Model',
    fields=[
        {'name': 'Directory'},
        {'name': 'Description'},
    ],
    templates=[
        {
            'name': 'Card 1',
            'qfmt': '{{Directory}}',
            'afmt': '{{Description}}',
        },
        {
            'name': 'Card 2',
            'qfmt': '{{Description}}',
            'afmt': '{{Directory}}',
        },
    ])

# Generate Anki cards and add them to a deck
deck_id = 2059400110
deck = genanki.Deck(deck_id, 'Linux Filesystem')

for dir_name, description in linux_dirs:
    note = genanki.Note(model=model, fields=[dir_name, description])
    deck.add_note(note)

# Save the deck to an Anki package (*.apkg) file
genanki.Package(deck).write_to_file('linux_filesystem.apkg')
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این اسکریپت خیلی خوب است، من اغلب از آن استفاده می کنم، اما بیایید وانمود نکنیم که کامل است.
شما باید هر بار که می خواهید چیزهایی را به صورت برنامه ای اضافه کنید، عرشه را تولید کنید. همچنین می‌توانید Deck ID را دریافت کنید و کارت‌های بیشتری را به یک بسته جدید با همان شناسه تولید کنید و آن‌ها را اضافه کنید، اما اگر مراقب نباشید می‌تواند منجر به خطا شود.
همچنین روش ورودی در حال حاضر آرایه ای از تاپل ها است. شما باید هر بار اسکریپت را ویرایش کنید تا آرایه را با یک دک جدید به روز کنید. همچنین می‌توانید آن را در یک فایل متنی کپی و جای‌گذاری کنید و ورودی را از آنجا بخوانید، و همچنین به‌طور تصادفی یک شناسه مدل ایجاد کنید، بنابراین می‌توانید محتویات کارت را در فایل متنی خود جای‌گذاری کنید و بسته را از یک اسکریپت واحد تولید کنید. این تا حدودی ذهنی است، بنابراین من عمدا آن را کنار گذاشتم.

Anki انواع مختلفی از کارت‌ها دارد که اصلی‌ترین آنها کارت‌های پایه (محرک حافظه + پاسخ) و بسته (یک یا چند محرک حافظه تعبیه‌شده در یک طرح کلی) است. این مثال از کارت اصلی و معکوس استفاده می کند، زیرا هر دو “سوال” و “پاسخ” می توانند یک محرک حافظه برای یکدیگر باشند. اگر یک کارت ساده و ابتدایی می‌خواهید، باید به نمونه آن در README Genanki مراجعه کنید.
امیدوارم این اسکریپت حداقل به عنوان یک نقطه شروع برای برنامه های کاربردی خود شما از Anki قابل برنامه ریزی باشد، احتمالاً امروزه روش اصلی مطالعه من است و بعد از ChatGPT کاملاً قدرتمندتر شده است. از کدنویسی خود لذت ببرید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا