Analyzing Math Items#
No assessment items ship with mathipy. Save each item image as <item_id>.png in one folder, with an items.csv holding item_id,grade,year,difficulty,content,image_file.
Setup#
pip install mathipy[all]
export MATHIPY_DATA_DIR=/path/to/items
import csv
from mathipy.data import get_sample_csv, get_sample_image
with open(get_sample_csv()) as f:
items = list(csv.DictReader(f))
Text features#
from mathipy import CognitiveLoadEstimator, MathContentAnalyzer, ReadabilityAnalyzer
text = "A garden is 8 feet long and 5 feet wide. What is its area in square feet?"
readability = ReadabilityAnalyzer().analyze(text)
math_content = MathContentAnalyzer().analyze(text)
load = CognitiveLoadEstimator().estimate(text)
MultimodalOCR reads item text from an image and requires a Gemini or OpenAI API key:
from mathipy import MultimodalOCR
text = MultimodalOCR(provider="gemini").extract(str(get_sample_image(items[0]["item_id"])))["full_text"]
Visual features#
from mathipy import VisualFeatureExtractor
features = VisualFeatureExtractor().extract(str(get_sample_image(items[0]["item_id"])))
Representation type#
Requires a Gemini or OpenAI API key.
from mathipy import VisualModelClassifier, flags_by_representation
result = VisualModelClassifier(provider="gemini").classify(
str(get_sample_image(items[0]["item_id"])), position="stem")
print(result["visual_type"], result["function"])
print(flags_by_representation(result))
Labels vary between runs; compare a hand-coded sample before relying on them.