observe method
Registers a new concept observation.
Updates frequency, co-occurrence, and sequence counters.
Implementation
void observe(Concept concept) {
_conceptFreq[concept.id] = (_conceptFreq[concept.id] ?? 0) + 1;
// Sequence: record transitions from previous window item
if (_sequenceWindow.isNotEmpty) {
final prev = _sequenceWindow.last;
final seqKey = '$prev→${concept.id}';
_sequences[seqKey] = (_sequences[seqKey] ?? 0) + 1;
}
// Co-occurrence with all items currently in window
for (final prevId in _sequenceWindow) {
final coKey = _coKey(prevId, concept.id);
_coOccurrence[coKey] = (_coOccurrence[coKey] ?? 0) + 1;
}
_sequenceWindow.add(concept.id);
if (_sequenceWindow.length > _windowSize) {
_sequenceWindow.removeAt(0);
}
}