מודול 10: מקרה בוחן III — כלי חרס ומסורות קדרות
שבוע 10 — מטיפולוגיה למרחב הצורות
מדוע כלי חרס?
כלי חרס הם החפץ הארכאולוגי הנפוץ ביותר בכמעט כל אתר בעולם. הם שורדים היטב, רגישים מאוד למסורות תרבותיות, ומסווגים טיפולוגית כבר יותר ממאה שנה. הם גם האובייקט האידיאלי לניתוח קווי מתאר: פרופילי כלים הם עקומות חלקות ללא נקודות ציון דרך בדידות.
צורת כלי חרס משקפת: - טכניקת ייצור — עיצוב בגלגל לעומת עיצוב ביד יוצר פרופילים שונים - תפקוד — כדי אחסון, סירי בישול וקערות הגשה בעלי מורפולוגיות אופייניות - כרונולוגיה — צורות הכלי השתנו עם הזמן ברוב המסורות - זהות תרבותית — קדרים למדו את מלאכתם בתוך קהילות; הצורה מקודדת העברה זו - חליפין — כשכלי חרס עברו בין קהילות, צורות הועתקו (ושונו בעדינות)
שבוע זה מחולק לשני חלקים. תחילה תקראו על מקרה בוחן שפורסם. לאחר מכן תריצו ניתוח משלכם על מאגר נתונים אמיתי בגישה פתוחה.
חלק I — מקרה בוחן שפורסם: כלי חרס קלטיים מBibracte
מה הייתה השאלה?
הטיפולוגיה הקדרותית בנויה על עין המומחה: ארכאולוג מסתכל על כלי ומסווג אותו לטיפוס. אך האם מחשב יכול להגיע לאותה מסקנה באמצעות צורה בלבד? ואם כן, מה זה אומר לנו על כך שהטיפולוגיה לוכדת מבנה מורפולוגי אמיתי?
זוהי השאלה שוילצ’ק ואחרים (2014) שאלו באמצעות 154 כלים שלמים מתקופת ברזל שנייה מBibracte, אופידום קלטי (עיר מבוצרת) גדול בבורגון שבצרפת. Bibracte הייתה בירת שבט האדואי בתקופת ברזל שנייה (המאה ה-2 לפנה”ס – המאה ה-1 לספירה) ואחד האופידום החפורים ביותר באירופה.
מאגר הנתונים
154 כלים עם חתכי רוחב שלמים ושמורים היטב. מסווגים ל8 טיפוסים פונקציונליים לפי הטיפולוגיה המסורתית של Barral ואחרים (1995):
| טיפוס | N | אופי |
|---|---|---|
| צלחות | 35 | רחב ושטוח; צורה פתוחה |
| קערות שטוחות | 20 | שטוחות מצלחות |
| קערות | 24 | חצי-כדורי; פתוח |
| כוסות | 18 | כלי שתייה קטנים, סגורים |
| גביעים | 14 | גבוה, צר; שתייה |
| סירים | 27 | בינוני, סגור; בישול/אחסון |
| אגרטלים | 9 | גוף רחב; אחסון |
| בקבוקים | 7 | צוואר צר; סגור |
קווי המתאר חולצו מציורים ארכאולוגיים שפורסמו (סריקות 1200 dpi, חצי חתך חיצוני מוכפל לפרופיל מלא), ועובדו בניתוח פורייה אליפטי (EFA) עם 20 הרמוניות.
מה הם מצאו
PC1 לוכד ~93% מסך שונות הצורה. הציר הראשי של שונות הצורה הוא אורך: צלחות תופסות קצה אחד (רחב, שטוח) ובקבוקים תופסים את הקצה האחר (גבוה, צוואר צר). קערות, סירים, כוסות וגביעים נופלים ביניהם.
אשכול מחשב בלתי מפוקח של מרחב הצורות (ללא ידיעה על הטיפוסים המסורתיים) הניב 7 אשכולות התואמים קרוב ל-8 הטיפוסים המסורתיים — המחשב והארכאולוג הגיעו בעיקר להסכמה. זה מאמת שEFA לוכד את אותו מבנה מורפולוגי שטיפולוגים תיארו אינטואיטיבית במשך עשורים.
חשוב לציין, חלק מהטיפוסים מציגים שונות פנימית גבוהה בצורה (סירים, גביעים) בעוד אחרים מרוכזים בצורה הדוקה (צלחות, בקבוקים). זה חושף אילו טיפוסים קוהרנטיים מורפולוגית ואילו עשויים לחפוף פונקציונלית.
מדוע זה חשוב
EFA הופך את הטיפולוגיה לניתנת לשכפול ולכימות. כל אחד יכול להריץ את אותו קוד על אותן תמונות ולקבל את אותה תוצאה. המומחה עדיין נדרש לפרש תוצאות אלה ארכאולוגית — אבל הסיווג הראשוני יכול להיות אוטומטי ונבדק סטטיסטית.
Citation: Wilczek, J., Monna, F., Barral, P., Burlet, L., Chateau, C., Navarro, N. (2014). Morphometrics of Second Iron Age ceramics — strengths, weaknesses, and comparison with traditional typology. Journal of Archaeological Science 50: 39–50. DOI: 10.1016/j.jas.2014.05.033
חלק II — הניתוח שלכם: כדי Ogame מיפן בתקופת אדו
שאלת המחקר
לא כל שאלות הצורה עוסקות בטיפולוגיה. שאלה שונה ולא פחות חשובה עוסקת בייצור ובחירה:
האם כדים מאתרי כבשנים (שם יוצרו) מתוקננים יותר בצורה מכדים מהקשרי קבורה (שם בחרו משפחות כלים קבורים)?
אם כדי כבשן אחידים מאוד, זה אומר לנו משהו על ארגון הייצור — קדרים עובדים לפי תקן. אם כדי קבורה מציגים צורות שונות או מגוונות יותר, זה עשוי לאמר שמשפחות בחרו כלים בולטים ויזואלית, או שכבשנים שונים סיפקו לשווקים שונים.
שאלה זו ניתנת למענה עם EFA + PCA.
מאגר הנתונים
Loftus, J. (2025). A Geometric Morphometric Dataset of Edo-Period ‘Ogame’ Jar Profiles from Northern Kyushu, Japan. Journal of Open Archaeology Data 13:13. DOI: 10.5334/joad.159 | Data: zenodo.org/records/15781166
Ogame (大甕, “כד גדול”) הם כלי אחסון עבי-דופן מתקופת אדו (כ-1600–1800 לספירה) שיוצרו בפרובינציות היזן ועיקוזן שבקיושו הצפונית. הם שימשו לתפקידים מגוונים: אחסון רוטב סויה וסחורות אחרות, וגם ככלי קבורה לשרידי אדם.
| פרטים | 243 כדים |
| אתרים | 12 (2 כבשנים + 9 אתרי קבורה + 1 אוסף מוזיאון) |
| פורמט | תמונות PNG סטנדרטיות של סילואט, אחת לכל כד |
| רישיון | CC-BY 4.0 |
| קוד אתר | שם אתר | הקשר | N |
|---|---|---|---|
| FR | Furukameyashimo | כבשן | 89 |
| KM | Kameya | כבשן | 48 |
| MR | Maruya | קבורה | 36 |
| NT | Nishitakagi | קבורה | 21 |
| NS | Narasaki | קבורה | 11 |
| MD | Mukaida | קבורה | 12 |
| MT | Mitsutake | קבורה | 10 |
| HK | Hakozaki | קבורה | 4 |
| KS, KT, TJ, TK | קבורה אחרת | קבורה | 12 |
אתרי כבשן (FR + KM = 137 כדים) לעומת אתרי קבורה (106 כדים) היא ההשוואה המרכזית.
צינור כלי החרס
מחברת זו בנויה מראש — הריצו תא אחר תא ללא כתיבת קוד חדש. התמקדו בפרשנות.
שלב 1 — התקנה וייבוא
!pip install pyefd scikit-image python-bidi --quiet
import os, zipfile, requests
import numpy as np
import pandas as pd
from PIL import Image
from skimage import measure
import pyefd
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
from scipy.stats import mannwhitneyu
from bidi.algorithm import get_display
rtl = get_display # תיקון כיוון טקסט עברי בגרפים של matplotlibשלב 2 — הורדה ופתיחת מאגר הנתונים
# הורדה מ-Zenodo (הריצו פעם אחת — כ-30 MB)
url = "https://zenodo.org/records/15781166/files/Ogame_GMM.zip?download=1"
r = requests.get(url, stream=True)
with open("Ogame_GMM.zip", "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
with zipfile.ZipFile("Ogame_GMM.zip") as z:
z.extractall(".")
print("הסתיים. הקבצים חולצו לתיקיית Ogame_GMM/")שלב 3 — טעינת מטה-דאטה
samples = pd.read_csv("Ogame_GMM/Ogame_Samples.csv")
# שינוי שם העמודה הארוכה
samples = samples.rename(columns={
samples.columns[3]: "context_code"
})
samples["context"] = samples["context_code"].map({1: "קבורה", 2: "כבשן"})
print(samples["context"].value_counts())
print(samples["Site Code"].value_counts())שלב 4 — חילוץ קווי מתאר וחישוב EFA
def extract_outline(image_path):
"""חולץ את הקו החיצוני של סילואט כלי שחור על רקע לבן."""
img = np.array(Image.open(image_path).convert('L'))
binary = img < 128 # True היכן שהכלי נמצא (פיקסלים כהים)
contours = measure.find_contours(binary.astype(float), 0.5)
if not contours:
return None
return max(contours, key=len) # הקו הגדול ביותר = קו מתאר הכלי
records = []
img_dir = "Ogame_GMM/Ogame_Profiles_All"
for _, row in samples.iterrows():
path = os.path.join(img_dir, f"{row['Sample ID']}.png")
if not os.path.exists(path):
continue
outline = extract_outline(path)
if outline is None or len(outline) < 50:
continue
y, x = outline[:, 0], outline[:, 1] # skimage מחזיר (שורה, עמודה)
# חישוב EFA עם 20 הרמוניות, מנורמל לגודל וכיוון
coeffs = pyefd.elliptic_fourier_descriptors(
np.column_stack([x, y]), order=20, normalize=True
)
records.append({
"sample_id": row["Sample ID"],
"site_code": row["Site Code"],
"context": row["context"],
**{f"e{i:03d}": v for i, v in enumerate(coeffs.ravel())}
})
df = pd.DataFrame(records)
print(f"עובדו {len(df)} כדים בהצלחה")שלב 5 — PCA וויזואליזציה
coeff_cols = [c for c in df.columns if c.startswith("e")]
X = df[coeff_cols].values
pca = PCA()
scores = pca.fit_transform(X)
var1 = pca.explained_variance_ratio_[0] * 100
var2 = pca.explained_variance_ratio_[1] * 100
# גרף 1: צביעה לפי הקשר
fig, axes = plt.subplots(1, 2, figsize=(14, 6))
colors = {"כבשן": "#e07b39", "קבורה": "#4a90c4"}
for ctx, col in colors.items():
mask = df["context"] == ctx
axes[0].scatter(scores[mask, 0], scores[mask, 1],
c=col, label=rtl(f"{ctx} (n={mask.sum()})"),
s=50, alpha=0.75, edgecolors="white", linewidths=0.5)
axes[0].set_xlabel(f"PC1 ({var1:.1f}%)")
axes[0].set_ylabel(f"PC2 ({var2:.1f}%)")
axes[0].set_title(rtl("מרחב צורות כד Ogame — לפי הקשר"))
axes[0].axhline(0, color="grey", lw=0.5, ls="--")
axes[0].axvline(0, color="grey", lw=0.5, ls="--")
axes[0].legend()
# גרף 2: צביעה לפי אתר ייצור (כבשנים בלבד)
kiln_mask = df["context"] == "כבשן"
kiln_sites = df.loc[kiln_mask, "site_code"].unique()
kiln_colors = {"FR": "#d62728", "KM": "#ff7f0e"}
for site in kiln_sites:
mask = df["site_code"] == site
axes[1].scatter(scores[mask, 0], scores[mask, 1],
c=kiln_colors.get(site, "#aaaaaa"),
label=f"{site} (n={mask.sum()})",
s=55, alpha=0.8, edgecolors="white", linewidths=0.5)
axes[1].set_xlabel(f"PC1 ({var1:.1f}%)")
axes[1].set_ylabel(f"PC2 ({var2:.1f}%)")
axes[1].set_title(rtl("השוואת כבשנים — FR לעומת KM"))
axes[1].axhline(0, color="grey", lw=0.5, ls="--")
axes[1].axvline(0, color="grey", lw=0.5, ls="--")
axes[1].legend()
plt.tight_layout()
plt.savefig("ogame_pca.png", dpi=150, bbox_inches="tight")
plt.show()
print(f"PC1: {var1:.1f}% | PC2: {var2:.1f}% | ביחד: {var1+var2:.1f}%")שלב 6 — בדיקה סטטיסטית (כבשן לעומת קבורה)
pc1_kiln = scores[df["context"] == "כבשן", 0]
pc1_burial = scores[df["context"] == "קבורה", 0]
stat, p = mannwhitneyu(pc1_kiln, pc1_burial, alternative="two-sided")
print(f"מבחן מאן-וויטני U על ציוני PC1:")
print(f" ממוצע PC1 כבשן: {pc1_kiln.mean():.4f}")
print(f" ממוצע PC1 קבורה: {pc1_burial.mean():.4f}")
print(f" U = {stat:.1f}, p = {p:.4f}")
if p < 0.05:
print(" → הבדל מובהק בצורה בין כדי כבשן וקבורה.")
else:
print(" → אין הבדל מובהק — הצורות חופפות.")פרשנות התוצאות
עבדו על שאלות אלה עם גרפי PCA שלכם:
האם כדי כבשן וקבורה נפרדים במרחב הצורות? אם כן, מה זה אומר ארכאולוגית? אם לא — מה עשוי להסביר את היעדר ההבדל?
האם שני אתרי הכבשן (FR ו-KM) מתכנסים בנפרד? אם כן, זה מרמז שלכל סדנה היה סגנון ייצור משלה. אם הם חופפים, כבשנים ייצרו לפי תקן אזורי משותף.
אילו תכונות צורה מניעות את PC1? הסתכלו על כדים המצויירים בקצה השמאלי לעומת הימני של גרף הפיזור. שאלו: מה שונה ויזואלית באותם כלים?
מהי הפיזור בתוך כל הקשר? שונות גבוהה בכדי קבורה יכולה לאמר שמשפחות בחרו כלים אינדיבידואליים; שונות נמוכה בכדי כבשן מרמזת על תקנון ייצור.
קשרו להקשר היסטורי: תקופת אדו (1600–1800) הייתה תקופת הרחבה של ייצור מסחרי בקיושו. כבשנים גדולים כמו Furukameyashimo (FR) ייצרו לשווקים אזוריים. האם הייצור המסחרי הוביל לצורות כד מתוקננות יותר מכדים שנבחרו לקבורה?
חיבור בחזרה ל-Bibracte
| Bibracte (Wilczek 2014) | כדי Ogame (Loftus 2025) | |
|---|---|---|
| שאלה | האם הצורה מפרידה טיפוסים פונקציונליים? | האם הצורה מפרידה הקשרי ייצור/קבורה? |
| שיטה | EFA על ציורים ארכאולוגיים | EFA על סילואטים PNG סטנדרטיים |
| ממצא עיקרי | PC1 = אורך; טיפוסים אושרו במידה רבה | TBD — אתם תגלו זאת |
| משמעות ארכאולוגית | לטיפולוגיה יש בסיס מורפולוגי אמיתי | תקנון ייצור ובחירה לקבורה |
שתי המחקרים משתמשים באותו כלי מתמטי — EFA — לשאלות שונות מהיסוד. זוהי עוצמת המורפומטריה הגיאומטרית: שיטה אחת, שאלות רבות.
מטלה 5 מגיעה השבוע
הריצו את מחברת שבוע 10 על מאגר Ogame. הציגו גרף PCA אחד (צבוע לפי הקשר). כתבו 300 מילה המחברות את דפוס הצורה להקשר הארכאולוגי של ייצור ושימוש לקבורה ביפן בתקופת אדו.
לשבוע הבא: בדיקת השערות
אנחנו מסדירים את הכלים הסטטיסטיים שהשתמשנו בהם באופן אינטואיטיבי: בדיקות הרשאה, גדלי אפקט, אלומטריה והשוואות מרובות.