GPT
C

code_search_net

קוד פתוח

code-search-netother2022-03-02

מאגר שמחבר פונקציות קוד עם התיעוד המקורי שלהן מגיטהאב בשש שפות שונות. הוא מיועד למי שבונה חיפוש קוד בשפה חופשית או מאמן מודלים להבנת שפות תכנות.

  • 48,229הורדות בחודש
  • 337לייקים

מה זה

כל רשומה במאגר מורכבת מזוג של פונקציה ותיעוד טקסטואלי שנשלפו ממאגרי קוד פתוח ציבוריים בגיטהאב, שאינם פיצולים. המפתחים השתמשו במידע מאתר libraries.io כדי לבחור פרויקטים פופולריים לפי כוכבים ופיצולים, וסיננו פרויקטים ללא רישיון שמתיר הפצה מחדש. הפונקציות נותחו באמצעות כלי הפירסור Treesitter, יחד עם חילוץ התיעוד באמצעות ביטויים רגולריים.

הסינון הראשוני העביר רק פונקציות שכללו תיעוד באורך שלושה טוקנים לפחות וגוף קוד של שלוש שורות ומעלה. פונקציות בדיקה המכילות את המילה test, בנאים, מתודות סטנדרטיות וכפילויות הוסרו מהמאגר. התיעוד עצמו קוצץ לפסקה הראשונה כדי למנוע פירוט יתר של פרמטרים וערכי החזרה.

הנתונים מחולקים לפי שש שפות תכנות: פייתון, ג'אווה, ג'אווהסקריפט, PHP, רובי ו־Go, לצד תצורת מאגר כללית. כל שפה כוללת חלוקה מובנית לקבוצות אימון, בדיקה ואימות.

מתאים ל

  • איחזור קוד

    אימון מודלים לחיפוש קטעי קוד רלוונטיים באמצעות שאילתות בשפה טבעית.

  • יצירת תיעוד לקוד

    כוונון מודלים לכתיבת דוקומנטציה והסברים לפונקציות קיימות.

  • מידול שפות תכנות

    הערכת מודלי שפה על הבנת תחביר של שש שפות תכנות שונות.

איפה זה נופל

הסינון הטכני יצר הטיות ברורות בקוד, שכן פונקציות ללא תיעוד נזרקו לחלוטין למרות שהן נפוצות מאוד במציאות. בנוסף, חיתוך התיעוד לפסקה הראשונה בלבד משמיט מידע קריטי על פרמטרים וחריגות, מה שמגביל משימות הדורשות הבנה עמוקה של חתימת הפונקציה. הדאטהסט מתמקד בשש שפות תכנות בלבד, אינו מכיל שפות כמו C או C++, והכרטיס אינו מפרט מידע לגבי מידע אישי ורגיש שעלול היה להישאב ממאגרי המקור.

שאלות
נפוצות

האם מותר להשתמש במאגר לפיתוח מוצר מסחרי?

הכרטיס מציין שהרישיון הכולל מוגדר כאחר ואינו מספק הגנה מסחרית גורפת. כל רשומה מגיעה ממאגר גיטהאב נפרד עם תנאים משלו, והמידע על הרישיון הספציפי אינו מופיע ברשומות עצמן. תידרשו לבדוק בעצמכם את הרישיון של כל פרויקט מקור לפני שילובו במוצר.

האם יש במאגר תמיכה בעברית?

המאגר אינו מכיל תיעוד או קוד בעברית. כל הנתונים נאספו ממאגרי קוד פתוח בינלאומיים בגיטהאב והתיעוד כתוב באנגלית. הוא מיועד לחיבור בין אנגלית לשפות תכנות בלבד.

איך נאספו וסוננו הפונקציות בפועל?

הפרויקטים נבחרו לפי פופולריות וכוכבים דרך libraries.io, בתנאי שאינם פיצול של פרויקט אחר. לאחר מכן הוסרו פונקציות ללא תיעוד, בדיקות תוכנה, מתודות קצרות משלוש שורות וכפילויות קוד. התיעוד עצמו קוצץ לפסקה הראשונה באמצעות כלי הפירסור Treesitter.

מה ההבדל בין קבצי all לקבצים של שפה בודדת?

התיקיות הייעודיות לכל שפה מאפשרות להוריד רק את הדוגמאות של פייתון, רובי או שפה אחרת שמעניינת אתכם. קבצי all מרכזים את כל שש השפות יחד תחת אותם פיצולים של אימון, בדיקה ואימות. המבנה הפנימי של השדות נשאר זהה לחלוטין בשתי האפשרויות.

איך טוענים

המאגר מחולק לעשרים וארבעה קבצי Parquet ישירים וזמין לטעינה חופשית ללא צורך בהרשאת גישה מיוחדת. אפשר להוריד קבצים עבור שפה בודדת מתוך השש, או למשוך את תצורת all שמאגדת את כולן יחד. בכל רשומה חשוב לשים לב לשדות whole_func_string המכיל את הקוד והדוקומנטציה יחד, func_code_string לקוד בלבד, ו־func_documentation_string שמחזיק את התיעוד הנקי. שדות הטוקנים func_code_tokens כבר עברו פירסור מוכן מראש.

from datasets import load_dataset

ds = load_dataset("code-search-net/code_search_net")

הרישיון

הרישיון מוגדר כ־other ומציב סיכון משפטי ברור. המפתחים מסבירים שכל דגימה הגיעה ממאגר נפרד עם תנאים משלו, והמאגר הנוכחי אינו כולל את פרטי הרישיון ברמת הרשומה הבודדת. מי שמתכנן לאמן מודל לשימוש מסחרי נדרש לאתר בעצמו את הרישיון המקורי של כל פרויקט דרך הקישור הישיר, מה שהופך שימוש מסחרי מחוץ למחקר למורכב ביותר.

הרישיון המלא ב־Hugging Face ↗