ver< elegant!
Another option: split the entries into multiple columns, stack them and the calculate a summary:
dt = current data table();
n1 = ncols(dt);
dt << Text to Columns( columns( :overlap_genes ), Delimiters( ",", " " ) );
n2 = ncols(dt);
dtstack = dt << Stack(
columns(Eval(n1+1 :: n2)),
Drop All Other Columns( 1 ),
);
dtstack << Select Where( :Data == "" ) << Delete Rows;
dtstack << Summary( Group( :Data ));