#/*-*- Mode: C++ -*- */
MODULE = Moot PACKAGE = Moot::HMM
##=====================================================================
## Constructors etc.
##=====================================================================
##-- disable perl prototypes
PROTOTYPES: DISABLE
##------------------------------------------------------
## Constructor: new()
mootHMM*
_new(char *CLASS)
CODE:
RETVAL=new mootHMM();
OUTPUT:
RETVAL
##------------------------------------------------------
## clear
void
clear(mootHMM* hmm, bool wipe_everything=true, bool unlogify=false)
CODE:
hmm->clear(wipe_everything,unlogify);
##------------------------------------------------------
## Destructor: DESTROY()
void
DESTROY(mootHMM* hmm)
CODE:
if (hmm) delete hmm;
##=====================================================================
## Accessors
##=====================================================================
##------------------------------------------------------
int
verbose(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->verbose=SvUV(ST(1));
RETVAL = hmm->verbose;
OUTPUT:
RETVAL
##------------------------------------------------------
size_t
ndots(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->ndots=SvUV(ST(1));
RETVAL=hmm->ndots;
OUTPUT:
RETVAL
##------------------------------------------------------
bool
save_ambiguities(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->save_ambiguities=SvTRUE(ST(1));
RETVAL=hmm->save_ambiguities;
OUTPUT:
RETVAL
##------------------------------------------------------
bool
save_flavors(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->save_flavors=SvTRUE(ST(1));
RETVAL=hmm->save_flavors;
OUTPUT:
RETVAL
##------------------------------------------------------
bool
save_mark_unknown(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->save_mark_unknown=SvTRUE(ST(1));
RETVAL=hmm->save_mark_unknown;
OUTPUT:
RETVAL
##------------------------------------------------------
bool
hash_ngrams(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->hash_ngrams=SvTRUE(ST(1));
RETVAL = hmm->hash_ngrams;
OUTPUT:
RETVAL
##------------------------------------------------------
bool
relax(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->relax=SvTRUE(ST(1));
RETVAL = hmm->relax;
OUTPUT:
RETVAL
##------------------------------------------------------
bool
use_lex_classes(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->use_lex_classes=SvTRUE(ST(1));
RETVAL = hmm->use_lex_classes;
OUTPUT:
RETVAL
##------------------------------------------------------
bool
use_flavors(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->use_flavors=SvTRUE(ST(1));
RETVAL=hmm->use_flavors;
OUTPUT:
RETVAL
##------------------------------------------------------
TagID
start_tagid(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->start_tagid=SvUV(ST(1));
RETVAL = hmm->start_tagid;
OUTPUT:
RETVAL
##------------------------------------------------------
ProbT
unknown_lex_threshhold(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->unknown_lex_threshhold=SvNV(ST(1));
RETVAL = hmm->unknown_lex_threshhold;
OUTPUT:
RETVAL
##------------------------------------------------------
ProbT
unknown_class_threshhold(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->unknown_class_threshhold=SvNV(ST(1));
RETVAL = hmm->unknown_class_threshhold;
OUTPUT:
RETVAL
##------------------------------------------------------
ProbT
nglambda1(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->nglambda1=SvNV(ST(1));
RETVAL = hmm->nglambda1;
OUTPUT:
RETVAL
##------------------------------------------------------
ProbT
nglambda2(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->nglambda2=SvNV(ST(1));
RETVAL = hmm->nglambda2;
OUTPUT:
RETVAL
##------------------------------------------------------
ProbT
nglambda3(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->nglambda3=SvNV(ST(1));
RETVAL = hmm->nglambda3;
OUTPUT:
RETVAL
##------------------------------------------------------
ProbT
wlambda0(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->wlambda0=SvNV(ST(1));
RETVAL = hmm->wlambda0;
OUTPUT:
RETVAL
##------------------------------------------------------
ProbT
wlambda1(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->wlambda1=SvNV(ST(1));
RETVAL = hmm->wlambda1;
OUTPUT:
RETVAL
##------------------------------------------------------
ProbT
clambda0(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->clambda0=SvNV(ST(1));
RETVAL = hmm->clambda0;
OUTPUT:
RETVAL
##------------------------------------------------------
ProbT
clambda1(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->clambda1=SvNV(ST(1));
RETVAL = hmm->clambda1;
OUTPUT:
RETVAL
##------------------------------------------------------
ProbT
beamwd(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->beamwd=SvNV(ST(1));
RETVAL = hmm->beamwd;
OUTPUT:
RETVAL
##------------------------------------------------------
size_t n_tags(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->n_tags=SvUV(ST(1));
RETVAL = hmm->n_tags;
OUTPUT:
RETVAL
##------------------------------------------------------
size_t n_toks(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->n_toks=SvUV(ST(1));
RETVAL = hmm->n_toks;
OUTPUT:
RETVAL
##------------------------------------------------------
size_t n_classes(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->n_classes=SvUV(ST(1));
RETVAL = hmm->n_classes;
OUTPUT:
RETVAL
##------------------------------------------------------
size_t
nsents(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->nsents=SvUV(ST(1));
RETVAL = hmm->nsents;
OUTPUT:
RETVAL
##------------------------------------------------------
size_t
ntokens(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->ntokens=SvUV(ST(1));
RETVAL = hmm->ntokens;
OUTPUT:
RETVAL
##------------------------------------------------------
size_t
nnewtokens(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->nnewtokens=SvUV(ST(1));
RETVAL = hmm->nnewtokens;
OUTPUT:
RETVAL
##------------------------------------------------------
size_t
nunclassed(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->nunclassed=SvUV(ST(1));
RETVAL = hmm->nunclassed;
OUTPUT:
RETVAL
##------------------------------------------------------
size_t
nnewclasses(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->nnewclasses=SvUV(ST(1));
RETVAL = hmm->nnewclasses;
OUTPUT:
RETVAL
##------------------------------------------------------
size_t
nunknown(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->nunknown=SvUV(ST(1));
RETVAL = hmm->nunknown;
OUTPUT:
RETVAL
##------------------------------------------------------
size_t
nfallbacks(mootHMM *hmm, ...)
CODE:
if (items>1) hmm->nfallbacks=SvUV(ST(1));
RETVAL = hmm->nfallbacks;
OUTPUT:
RETVAL
##=====================================================================
## Lookup
##=====================================================================
##------------------------------------------------------
ProbT
wordp(mootHMM *hmm, char *tokstr, char *tagstr)
CODE:
RETVAL = hmm->wordp(tokstr, tagstr);
OUTPUT:
RETVAL
##------------------------------------------------------
ProbT
classp(mootHMM *hmm, AV *tagsetav, char *tagstr, U32 utf8=TRUE)
PREINIT:
mootTagSet *tagset;
mootHMM::LexClass *lclass;
CODE:
tagset = av2tagset(tagsetav, NULL, utf8);
lclass = hmm->tagset2lexclass(*tagset, NULL, false);
RETVAL = hmm->classp(*lclass, tagstr);
delete lclass;
delete tagset;
OUTPUT:
RETVAL
##------------------------------------------------------
ProbT
tagp(mootHMM *hmm, ...)
PREINIT:
mootHMM::Trigram tg;
CODE:
if (items < 2) {
Perl_croak(aTHX_ "Usage: Moot::HMM::tagp(hmm, tag1 [,tag2 [,tag3]])");
} else if (items==2) {
char *tag1 = SvPV_nolen(ST(1));
tg.tag3 = hmm->tagids.name2id(tag1);
} else if (items==3) {
char *tag1 = SvPV_nolen(ST(1));
char *tag2 = SvPV_nolen(ST(2));
tg.tag2 = hmm->tagids.name2id(tag1);
tg.tag3 = hmm->tagids.name2id(tag2);
} else if (items==4) {
char *tag1 = SvPV_nolen(ST(1));
char *tag2 = SvPV_nolen(ST(2));
char *tag3 = SvPV_nolen(ST(3));
tg.tag1 = hmm->tagids.name2id(tag1);
tg.tag2 = hmm->tagids.name2id(tag2);
tg.tag3 = hmm->tagids.name2id(tag3);
}
RETVAL = hmm->tagp(tg);
OUTPUT:
RETVAL
##=====================================================================
## Tagging
##=====================================================================
##------------------------------------------------------
void
tag_sentence(mootHMM *hmm, AV* sentav, bool utf8=TRUE, bool trace=FALSE)
PREINIT:
mootSentence *s;
CODE:
s = av2sentence(sentav, NULL, utf8);
hmm->tag_sentence(*s);
if (trace) hmm->tag_dump_trace(*s);
sentence2tokdata(s, utf8);
delete s;
##------------------------------------------------------
void
tag_io(mootHMM *hmm, TokenReader *reader, TokenWriter *writer)
CODE:
hmm->tag_io(reader,writer);
##------------------------------------------------------
void
tag_stream(mootHMM *hmm, TokenReader *reader, TokenWriter *writer)
CODE:
hmm->tag_stream(reader,writer);
##=====================================================================
## I/O
##=====================================================================
##------------------------------------------------------
## I/O: Text Model
bool
_load_model(mootHMM *hmm, char *modelname, char *start_tag_str=NULL)
CODE:
RETVAL = hmm->load_model(modelname, (start_tag_str ? start_tag_str : "__$"));
OUTPUT:
RETVAL
##------------------------------------------------------
## I/O: Binary
bool
_load(mootHMM *hmm, char *filename)
CODE:
RETVAL = hmm->load(filename);
OUTPUT:
RETVAL
bool
_save(mootHMM *hmm, char *filename, int compression_level=-1)
CODE:
RETVAL = hmm->save(filename,compression_level);
OUTPUT:
RETVAL
##------------------------------------------------------
## I/O: dump
void
txtdump(mootHMM *hmm, char *filename=NULL)
CODE:
FILE *f=stdout;
if (filename && strcmp(filename,"-") != 0) f = fopen(filename,"wb");
if (f == NULL) croak("HMM::txtdump(): open failed for file '%s'", filename);
hmm->txtdump(f);
if (f != stdout) fclose(f);