in glan-instruct/glan.py [0:0]
def sample_class_sessions_and_key_concepts(class_sessions, key_concepts, single_session=True):
"""
Sample class sessions and key concepts to generate questions of varying difficulty.
class_sessions: List of class sessions
key_concepts: List of key concepts for each session.
single_session: Whether to sample from a single session or multiple sessions.
:return: Combination of sampled class sessions and core concepts
"""
if single_session:
session_index = random.randint(0, len(class_sessions) - 1)
selected_session = class_sessions[session_index]
num_concepts = min(5, len(key_concepts[session_index]))
selected_key_concepts = random.sample(key_concepts[session_index], k=random.randint(1, num_concepts))
else:
if len(class_sessions) < 2:
raise ValueError("Not enough sessions for multi-session sampling")
session_indices = random.sample(range(len(class_sessions)), k=2)
selected_sessions = [class_sessions[i] for i in session_indices]
combined_key_concepts = key_concepts[session_indices[0]] + key_concepts[session_indices[1]]
num_concepts = min(5, len(combined_key_concepts))
selected_key_concepts = random.sample(combined_key_concepts, k=random.randint(2, num_concepts))
return selected_session if single_session else selected_sessions, selected_key_concepts