Program boundaries are determined through viewing behavior. More
specifically, edge and/or commercial boundaries of programs may be
determined by monitoring viewing behavior of different video segments
using forward and backward correlations between video segments. In a
described implementation, a video portion is divided into segments. To
monitor the viewing of the video portion, whether each particular segment
is played by a viewer (as compared to being unviewed or viewed in an
accelerated manner) is tracked for a number of different viewers. For
each segment, correlations with previous and subsequent segments are
calculated based on viewership. The segments may then be categorized. A
segment that is strongly correlated with subsequent segments but not
previous segments is categorized as a starting segment. A segment that is
strongly correlated with previous segments but not subsequent segments is
categorized as an ending segment. Middle and island segments may also be
categorized.