=head1 NAME

ids2ngram - generate n-gram data file from ids file

=head1 SYNOPSIS

ids2ngram [I<option>]... I<ids_file>...

=head1 DESCRIPTION

B<ids2ngram> generates idngram file, which is a sorted [id1,..,idN,freq] array, from binary id stream files. Here, the id stream files are always generated by B<mmseg> or B<slmseg>. Basically, it finds all occurrence of n-words tuples (i.e. the tuple of (id1,..,idN)), and sorts these tuples by the lexicographic order of the ids make up the tuples, then write them to specified output file.

=head1 INPUT

The input file is presented as a binary id stream, which looks like:
    [id0,...,idX]

=head1 OPTIONS

All the following options are mandatory.

=over 4

=item B<-n>,B<--NMax> I<N>

Generates I<N>-gram result. B<ids2ngram> does only support uni-gram, bi-gram, and trigram, so any number not in the range of 1..3 is not valid.

=item B<-s>,B<--swap> I<swap-file>

Specify the temporary intermediate file.


=item B<-o>, B<--out> I<output-file>

Specify the result idngram file, e.g. the array of [id1, ..., idN, freq]


=item B<-p>, B<--para> I<N>

Specify the maximum n-gram items per paragraph. B<ids2ngram> writes to the temporary file on a per-paragraph basis. Every time it writes a paragraph out, it frees the corresponding memory allocated for it. When your computer system permits, a higher I<N> is suggested. This can speed up the processing speed because of less I/O.


=back


=head1 EXAMPLE

Following example will use three input idstream file idsfile[1,2,3] to generate the idngram file all.id3gram. Each para (internal map size or hash size) would be 1024000, using swap file for temp result. All temp para result would eventually be merged to got the final result.

B<ids2ngram -n 3 -s /tmp/swap -o all.id3gram -p 1024000 idsfile1 idsfile2 idsfile3>

=head1 AUTHOR

Originally written by Phill.Zhang E<lt>phill.zhang@sun.comE<gt>.
Currently maintained by Kov.Chai E<lt>tchaikov@gmail.comE<gt>.

=head1 SEE ALSO

B<mmseg>(1), B<slmseg>(1), B<slmbuild> (1).

=for comment
-*- indent-tabs-mode: nil -*- vim:et:ts=4
