observe method

void observe(
  1. Concept concept
)

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);
  }
}