From dcef5d8ce9c48121d7cba76bc3f3d24d60a9fecb Mon Sep 17 00:00:00 2001 From: Antal van den Bosch Date: Fri, 3 Jul 2026 11:47:12 +0200 Subject: [PATCH] Draft Timbl 7.0 API reference guide Update the API reference guide from the last released version (Timbl_6.3_API, ILK Technical Report 10-03) to 7.0: - Replace dead ilk.uvt.nl URLs with GitHub / languagemachines.github.io equivalents; link against libtimbl via pkg-config instead of libTimbl.a - Add a 6.3 -> 7.0 changes section documenting the 6.8 API/ABI break: Unicode throughout (icu::UnicodeString overloads, Increment_u / Decrement_u), ValueDistribution renamed to ClassDistribution (with backward-compatible aliases), the new Vfield-based dist_iterator interface, removal of StartServer(), C++17 requirement - Document the new API calls: Prune() (--prune), SetThreads() (--clones), confidence() (+vcf), NS_Test(), WriteInstanceBaseLevels(), GetCurrentWeights(), and the CL_Options-based constructor; add SD to the Weighting enum - Point the server chapter to the TimblServer package - Refresh all six annotated example programs to the current demos/api_test*.cxx sources and regenerate their outputs with Timbl 7.0 (long repetitive blocks abbreviated) - Ship the compiled docs/Timbl_7.0_API.pdf Co-Authored-By: Claude Fable 5 --- docs/Timbl_7.0_API.pdf | Bin 0 -> 156247 bytes docs/texfiles/Timbl_7.0_API.tex | 1804 +++++++++++++++++++++++++++++++ 2 files changed, 1804 insertions(+) create mode 100644 docs/Timbl_7.0_API.pdf create mode 100644 docs/texfiles/Timbl_7.0_API.tex diff --git a/docs/Timbl_7.0_API.pdf b/docs/Timbl_7.0_API.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5e267374d00ae1c54f971c14e18853183c05850b GIT binary patch literal 156247 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%0DrgjsAEz zc@d>Q)A~n30IZb3>JV8OkUR*XprEO#fk3D$K#_7#1Qe+$D=!a*D#8H&+k`j{3ghXF za{)j=|Nob3p;1NsBzw-VWgplyYnY+Bx4JhRX<%WkhMT&JGe?Axrjx2ui^F4PrWosA z^dLfS+yGgks5I25SFW;TFQ~YU!kh<^4_?BkaJps9fNdJT`?-LN@Z&{Ceia5X@J)6=`8d69Uv|D3ZCtKi)elDnC z3=Fs$|eZFf$9?Fca1`i6t?()rOTLa`P(v4T9p};jD#__)BPehFKQ| zeO_8^X)Uzy6dN05X$b$E+iJt&+f^`M-YihY;&U|Yk4;RuT5S>HiVSnw^dM*j&f;Kf zhS&(L;GYwcsgd2e)h0EJCEj(>^61^xYIs+d&4Cs!Dqy88l4WN#Xb$Oa`fFRbPABk3 ze4}dMkJm57?HKxw_3fV0R=qp(@5=(+pd?HRNDT_`^23#!;VX7Value()} and {\tt + it->Weight()} where you used to write {\tt it->second->Value()} + and {\tt it->second->Weight()}. See Section~\ref{advanced}. +\item The {\tt StartServer()} function has been removed. All server + functionality lives in the separate TimblServer + package\footnote{\url{https://github.com/LanguageMachines/timblserver}}, + which wraps trained TiMBL experiments in a TCP, HTTP or JSON + server. See Chapter~\ref{server}. +\item The {\tt ShowBestNeighbors()} function lost its second (bool) + parameter; whether distributions are shown now follows from the + verbosity settings. +\item {\tt CurrentWeightings()} was renamed to {\tt + GetCurrentWeights()}. +\item New functions were added, reflecting new functionality of + Timbl 6.4--7.0: + \begin{itemize} + \item {\tt Prune()} prunes a trained IB1-like instance base to an + IGTree, the API equivalent of the new {\tt --prune} command line + option (see Section~\ref{prune}); + \item {\tt SetThreads()} sets the number of threads used for + testing, the equivalent of {\tt --clones}; + \item {\tt confidence()} returns the confidence of the last + classification (the equivalent of the {\tt +vcf} verbosity + option, in combination with {\tt -G}); + \item {\tt NS\_Test()} bulk-tests a file using neighborSets; + \item {\tt WriteInstanceBaseLevels()} dumps only the top levels of + the instance base; + \item {\tt Expand()} and {\tt Remove()} add or remove instances + from a file to/from a trained instance base; + \item {\tt lastHandledInstance()}, {\tt myTargets()}, {\tt + getInputFormat()}, {\tt isValid()}, {\tt initExperiment()} and + {\tt BuildInfo()} give access to more of TiMBL's internal state; + \item a constructor taking a pre-parsed {\tt TiCC::CL\_Options} + object was added next to the string-based constructor. + \end{itemize} +\item The {\tt Weighting} enum gained the value {\tt SD} (standard + deviation weighting for numeric features, the {\tt -w SD} option). +\end{itemize} + +\section{From version 6.2 to 6.3} + +No changes to the API are made for this release. This Manual is made +up to date (preserving the beta-state). + +\section{From version 6.1 to 6.2} + +In version 6.2, some additional functions were added to the API: {\tt + matchDepth()}, {\tt matchedAtLeaf()}, {\tt WriteMatrices()}, {\tt + GetMatrices()} and {\tt ShowStatistics()}. These reflect the +additional functionality of Timbl 6.2. The API is still experimental, +and contains more functions than described in this manual. Using these +`undocumented' features is, as usual, unwise. + +\section{From version 5.1 to 6.1} + +The major change in 6.0 is the introduction of the {\tt neighborSet} +class, with some special Classify functions. We added Classify +functions that deliver pointers into Timbl's internal data. This is +fast, but dangerous. Also, a {\tt WriteInstanceBaseXml()} function is +added, which comes in handy when you want to know more about the +instance base. Two more examples demonstrating neighborSets and such +are added in Appendix B. From version 6.0 to 6.1, the API has not changed. + +\section{From version 5.0 to 5.1} + +The API is quite stable at the moment. Most TiMBL changes did not +affect the API. The only real API change is in the {\tt GetWeights()} +function. (see the section on Storing and retrieving intermediate +results). + +\chapter{Quick-start} +\section{Setting up an experiment} + +There is just one way to start a TiMBL experiment, which is to call +the TimblAPI constructor: + +\begin{footnotesize} +\begin{verbatim} + TimblAPI( const std::string& args, const std::string& name ="" ); +\end{verbatim} +\end{footnotesize} + +args is used as a "command line" and is parsed for all kind of options +which are used to create the right kind of experiment with the desired +settings for metric, weighting etc. If something is wrong with the +settings, {\em no}\/ object is created. + +The most important option is {\tt -a} to set the kind of algorithm, +e.g. {\tt -a IB1} to invoke an IB1 experiment or {\tt -a IGTREE} to invoke an IGTREE +experiment. All command line options are described in the TiMBL +Reference Guide \cite{Daelemans+26}. + +The optional name can be useful if you have multiple experiments. +In case of warnings or errors, this name is appended to the message. + +For example: + +\begin{footnotesize} +\begin{verbatim} + TimblAPI *My_Experiment = new TimblAPI( "-a IGTREE +vDI+DB", + "test1" ); +\end{verbatim} +\end{footnotesize} + +{\tt My\_Experiment} is created as an IGTREE experiment with the name +"test1", and the verbosity is set to DI+DB, meaning that the output +will contain DIstance and DistriBution information. + +A second constructor takes a pre-parsed {\tt TiCC::CL\_Options} +object instead of an options string; this is convenient when your +program passes (a subset of) its own command line on to TiMBL. + +The counterpart to creation is the {\tt \~{ }TimblAPI()} destructor, +which is called when you delete an experiment: + +\begin{footnotesize} +\begin{verbatim} + delete My_Experiment; +\end{verbatim} +\end{footnotesize} + +\section{Running an experiment} + +Assuming that we have appropriate datafiles (such as the example files {\tt +dimin.train} and {\tt dimin.test} in the TiMBL package), we can get +started right away with the functions {\tt Learn()} and {\tt Test()}. + +\subsection{Training} +\begin{footnotesize} +\begin{verbatim} + bool Learn( const std::string& f ); +\end{verbatim} +\end{footnotesize} + +This function takes a file with name 'f', and gathers information +such as: number of features, number and frequency of feature values and +the same for class names. After that, these data are used to calculate +a lot of statistical information, which will be used for +testing. Finally, an InstanceBase is created, tuned to the current +algorithm. + +\subsection{Testing} +\begin{footnotesize} +\begin{verbatim} + bool Test( const std::string& in, + const std::string& out, + const std::string& perc = "" ); +\end{verbatim} +\end{footnotesize} + +Test a file given by 'in' and write results to 'out'. If 'perc' is not +empty, then a percentage score is written to file 'perc'. + +For example: + +\begin{footnotesize} +\begin{verbatim} + My_Experiment->Learn( "dimin.train" ); + My_Experiment->Test( "dimin.test", "my_first_test" ); +\end{verbatim} +\end{footnotesize} + +An InstanceBase will be created from dimin.train, then dimin.test is +tested against that InstanceBase and output is written to +my\_first\_test. + +Testing can be parallelised over several threads with + +\begin{footnotesize} +\begin{verbatim} + bool SetThreads( int c ); +\end{verbatim} +\end{footnotesize} + +which is the API equivalent of the {\tt --clones} command line option. + +\subsection{Special cases of {\tt Learn()} and {\tt Test()}} + +There are special cases where {\tt Learn()} behaves differently: + +\begin{itemize} +\item When the algorithm is IB2, {\tt Learn()} will automatically take + the first $n$ lines of f (set with the {\tt -b n} option) to + bootstrap itself, and then the rest of f for IB2-learning. After + Learning IB2, you can use {\tt Test()} as usual. + +\item When the algorithm is CV, {\tt Learn()} is not defined, and all + work is done in a special version of {\tt Test()}. 'f' is assumed to + give the name of a file, which, on separate lines, gives the names + of the files to be cross-validated. + + Also, if {\em featureWeights}\/ or {\em probabilities}\/ are read from + user-defined datafiles, a special {\tt CVprepare()} function must be called, + to make the weigthing, weightFilename and probabilityFileName known to the +{\tt Test()} function. + +See Appendix B for a complete CV example (program {\tt api\_test3}). + +\end{itemize} + +\section{More about settings} + +After an experiment is set up with the TimblAPI constructor, many +options can be changed "on the fly" with: + +\begin{footnotesize} +\begin{verbatim} + bool SetOptions( const std::string& opts ); +\end{verbatim} +\end{footnotesize} + +Here, `opts' is interpreted as a list of option settings, just like in +the TimblAPI constructor. When an error in the opts string is found, +{\tt SetOptions()} returns false. Whether any options are really set +or changed in that case is undefined. Note that a few options can only +be set {\em once}\/ when creating the experiment, most notably the +algorithm. Any attempt to change these options will result in a +failure. + +Note: {\tt SetOptions()} is lazy; changes are cached until the +moment they are really needed, so you can do several {\tt SetOptions()} +calls with even different values for the same option. Only the last +one seen will be used for running the experiment. + +To see which options are in effect, you can use the calls {\tt ShowOptions()} +and {\tt ShowSettings()}. + +\begin{footnotesize} +\begin{verbatim} + bool ShowOptions( std::ostream& ); +\end{verbatim} +\end{footnotesize} + +Shows all options with their possible and current values. + +\begin{footnotesize} +\begin{verbatim} + bool ShowSettings( std::ostream& ); +\end{verbatim} +\end{footnotesize} + +Shows all options and their currect values. + +For example: + +\begin{footnotesize} +\begin{verbatim} + My_Experiment->SetOptions( "-w2 -m:M" ); + My_Experiment->SetOptions( "-w3 -v:DB" ); + My_Experiment->ShowSettings( cout ) +\end{verbatim} +\end{footnotesize} + +See Appendix B (program {\tt api\_test1}) for the output. + +\section{Storing and retrieving intermediate results} + +To speed up testing, or to manipulate what is happening internally, we +can store and retrieve several important parts of our experiment: The +InstanceBase, the FeatureWeights, the ProbabilityArrays and the ValueDistance Matrices. + +Saving is done with: + +\begin{footnotesize} +\begin{verbatim} + bool WriteInstanceBase( const std::string& f ); + bool SaveWeights( const std::string& f ); + bool WriteArrays( const std::string& f ); + bool WriteMatrices( const std::string& f ); +\end{verbatim} +\end{footnotesize} + +Retrieve with their counterparts: + +\begin{footnotesize} +\begin{verbatim} + bool GetInstanceBase( const std::string& f ); + bool GetWeights( const std::string& f, Weighting w ); + bool GetArrays( const std::string& f ); + bool GetMatrices( const std::string& f ); +\end{verbatim} +\end{footnotesize} + +All use `f' as a filename for storing/retrieving. {\tt GetWeights} needs +information to decide {\em which}\/ weighting to retrieve. +Weighting is defined as the enumerated type: + +\begin{footnotesize} +\begin{verbatim} + enum Weighting { UNKNOWN_W, UD, NW, GR, IG, X2, SV, SD }; +\end{verbatim} +\end{footnotesize} + +Some notes: + +\begin{enumerate} +\item The InstanceBase is stored in a internal format, with or without +hashing, depending on the {\tt -H} option. The format is described in the +TiMBL manual. Remember that it is a bad idea to edit this file in any way. +\item {\tt GetWeights()} can be used to override the weights that +{\tt Learn()} calculated. {\tt UNKNOWN\_W} should not be used. +\item The Probability arrays are described in the TiMBL manual. They can be +manipulated to tune the MVDM similarity metric. +\end{enumerate} + +If you like you may dump the Instancebase in an XML format. No Retrieve +function is available for this format. + +\begin{footnotesize} +\begin{verbatim} + bool WriteInstanceBaseXml( const std::string& f ); +\end{verbatim} +\end{footnotesize} + +Related is: + +\begin{footnotesize} +\begin{verbatim} + bool WriteInstanceBaseLevels( const std::string& f, unsigned int l ); +\end{verbatim} +\end{footnotesize} + +which dumps only the first 'l' levels of the InstanceBase, which can +be useful to inspect the global structure of a large tree. + +\chapter{Classify functions} + +\section{Classify functions: Elementary} +After an experiment is trained with {\tt Learn()}, we do not have to use +{\tt Test()} to do bulk-testing on a file. +We can create our own tests with the {\tt Classify} functions: + +\begin{footnotesize} +\begin{verbatim} + bool Classify( const std::string& Line, std::string& result ); + bool Classify( const std::string& Line, std::string& result, + double& distance ); + bool Classify( const std::string& Line, std::string& result, + std::string& Distrib, double& distance ); +\end{verbatim} +\end{footnotesize} + +Results are stored in 'result' (the assigned class). 'distance' will +get the calculated distance, and 'Distrib' the distribution at +'distance' which is used to calculate 'result'. Distrib will be a +string like ``\{ NP 2, PP 6 \}''. It is up to you to parse and +interpret this. (In this case: There were 8 classes assigned at +'distance', 2 NP's and 6 PP's, giving a 'result' of ``PP''.) + +The {\tt std::string} arguments are interpreted as UTF-8 encoded +Unicode. Since version 6.8, a variant using ICU Unicode strings is +also available: + +\begin{footnotesize} +\begin{verbatim} + bool Classify( const icu::UnicodeString& Line, + icu::UnicodeString& result ); +\end{verbatim} +\end{footnotesize} + +If you want to perform analyses on these distributions, it might be a +good idea to read the next section about the other range of Classify() +functions. + +A main disadvantage compared to using {\tt Test()} is that {\tt + Test()} is optimized. {\tt Classify()} has to test for sanity of +its input and also whether a {\tt SetOptions()} has been +performed. This slows down the process. + +A good example of the use of {\tt Classify()} is the {\tt + classify.cxx} program in the TiMBL Distribution. + +Depending on the Algorithm and Verbosity setting, it may be possible +to get some extra information on the details of each classification +using: + +\begin{footnotesize} +\begin{verbatim} + bool ShowBestNeighbors( std::ostream& os ) const; +\end{verbatim} +\end{footnotesize} + +Provided that the option {\tt +v n} or {\tt +v k} is set and we use +IB1 or IB2, output is produced similar to what we see in the TiMBL +program. Bear in mind: The {\tt +vn} option is expensive in time +and memory and does not work for IGTREE, TRIBL, and TRIBL2. + +Two other functions provide the results as given by the {\tt +vmd} verbosity +option: + +\begin{footnotesize} +\begin{verbatim} + size_t matchDepth() const; + bool matchedAtLeaf() const; +\end{verbatim} +\end{footnotesize} + +The first returns the matching Depth in the InstanceBase; the second +flags whether it was a Leaf or a Non-Terminal Node. + +Finally, when a normalisation is set with the {\tt -G} option, + +\begin{footnotesize} +\begin{verbatim} + double confidence() const; +\end{verbatim} +\end{footnotesize} + +returns the confidence of the last classification, as given by the +{\tt +vcf} verbosity option. + +\section{Classify functions: Advanced} +\label{advanced} + +A faster, but more dangerous version of Classify is also available. +It is faster because it returns pointers into Timbl's internal +datastructures. It is dangerous because it returns pointers into +Timbl's internal datastructures (using 'const' pointers, so it is +fortunately difficult te really damage Timbl) + +\begin{footnotesize} +\begin{verbatim} + const TargetValue *Classify( const std::string& ); + const TargetValue *Classify( const std::string&, + const ClassDistribution *& ); + const TargetValue *Classify( const std::string&, double& ); + const TargetValue *Classify( const std::string&, + const ClassDistribution *&, + double& ); +\end{verbatim} +\end{footnotesize} + +All four also exist in a variant taking a {\tt const + icu::UnicodeString\&} as their first argument. + +A ClassDistribution (called ValueDistribution before version 6.8; an +alias with that name is still provided) is a list-like object (but it +is not a real list!) that contains TargetValues objects and +weights. It is the result of combining all nearest neighbors and +applying the desired weightings. Timbl chooses a best TargetValue +from this ClassDistribution and the Classify functions return that as +their main result. + +{\bf Important}: Because these functions return pointers into Timbl's +internal representation, the results are only valid until the next +Classify function is called (or the experiment is deleted). + +Both the TargetValue and ClassDistribution objects have output +operators defined, so you can print them. TargetValue also has a {\tt + name\_string()} function, which returns a std::string so you can +collect results. ClassDistribution has an iterator-like interface +which makes it possible to walk through the Distribution. + +An iterator on a {\tt ClassDistribution *vd} is created like this: +\begin{footnotesize} +\begin{verbatim} + ClassDistribution::dist_iterator it=vd->begin(); +\end{verbatim} +\end{footnotesize} + +The iterator walks through the entries of the distribution. Every +entry is a {\tt Vfield} object; you may print it directly, or extract +its {\tt Value()} (which happens to be a TargetValue pointer) or +extract its {\tt Weight()}, which is a {\tt double}. + +Like this: +\begin{footnotesize} +\begin{verbatim} + while ( it != vd->end() ){ + cout << *it << " has a value: "; + cout << it->Value() << " and a weight of " + << it->Weight() << endl; + ++it; + } +\end{verbatim} +\end{footnotesize} + +Printing {\tt *it} is the same as printing the +TargetValue plus its Weight. (Before version 6.8, the iterator +dereferenced to a pair, and you had to write {\tt it->second->Value()} +and {\tt it->second->Weight()}; the {\tt ->second} part is now gone.) + +In the {\em demos}\/ directory you will find a complete example in api\_test6. + +{\bf Warning}: it is possible to search the Timbl code for the +internal representation of the TargetValue and ClassDistribution +objects, but please DON'T DO THAT. The representation might change +between Timbl versions. + +\section{Classify functions: neighborSets} + +A more flexible way of classifying is to use one of these functions: + +\begin{footnotesize} +\begin{verbatim} + const neighborSet *classifyNS( const icu::UnicodeString& ); + bool classifyNS( const icu::UnicodeString&, neighborSet& ); + bool classifyNS( const std::string&, neighborSet& ); +\end{verbatim} +\end{footnotesize} + +The first function will classify an instance and return a pointer to a +{\tt neighborSet} object. This object may be seen as an container +which holds both distances and distributions up to a certain depth, +(which is {\em at least}\/ the number of neighbors (-k option) that +was used for the classifying task.) It is a const object, so you +cannot directly manipulate its internals, but there are some +functions defined to get useful information out of the neighborSet. + +Important: The neighborSet {\em will be overwritten}\/ on the next +call to any of the classify functions. Be sure to get all the +results out before that happens. + +To make life easy, the other variants can be used, which fill a +neighborSet object that you provide (the same could be achieved by a +copy of the result of the first function); the {\tt std::string} +variant interprets its input as UTF-8. + +{\bf Note}: NeighborSets can be large, and copying therefore +expensive, so you should only do this if you really have to. + +There is also a neighborSet-based counterpart of {\tt Test()}: + +\begin{footnotesize} +\begin{verbatim} + bool NS_Test( const std::string& in, const std::string& out ); +\end{verbatim} +\end{footnotesize} + +which bulk-tests file 'in', writing per-instance neighborSet +information to file 'out'. + +\subsection{How to get results from a neighborSet} + +No metric functions (such as exponential decay and the like) are +performed on the neighborSet. You are free to insert your own metrics, or +use Timbls built-in metrics. + +\begin{footnotesize} +\begin{verbatim} + double getDistance( size_t n ) const; + double bestDistance() const; + const ClassDistribution *getDistribution( size_t n ) const; + WClassDistribution *bestDistribution( const decayStruct * ds=0, + size_t n=0 ) const ; +\end{verbatim} +\end{footnotesize} + +{\tt getDistance( n )} will return the distance of the neighbor(s) at n. +{\tt bestDistance()} is simply {\tt getDistance(0)}. + +{\tt getDistribution( n )} will return the distribution of neighbor(s) at +n. + +{\tt bestDistribution()} will return the Weighted distribution +calculated using the first n elements in the container and a metric +specified by the {\tt decayStruct}. The default n=0, means: use the +whole container. An empty decay struct means zeroDecay. + +The returned WClassDistribution object is handed to you, and you are +responsible for deleting it after using it (see the previous section +for more details about ClassDistributions). + +A decayStruct is one of: + +\begin{footnotesize} +\begin{verbatim} + class zeroDecay(); + class invLinDecay(); + class invDistDecay(); + class expDecay( double alpha ); + class expDecay( double alpha, double beta ); +\end{verbatim} +\end{footnotesize} + +For example, to get a WClassDistribution form a neighborSet {\tt nb}, using +3 neighbors and exponential decay with alpha=0.3, you can do: + +\begin{footnotesize} +\begin{verbatim} + decayStruct *dc = new expDecay(0.3); + WClassDistribution *vd = nb->bestDistribution( dc, 3 ); +\end{verbatim} +\end{footnotesize} + + +\subsection{Useful operations on neighborSet objects} + +You can print neighborSet objects: + +\begin{footnotesize} +\begin{verbatim} + std::ostream& operator<<( std::ostream&, const neighborSet& ); + std::ostream& operator<<( std::ostream&, const neighborSet * ); +\end{verbatim} +\end{footnotesize} + +You may create a neighborSet yourself, and assign and delete them: + +\begin{footnotesize} +\begin{verbatim} + neighborSet(); + neighborSet( const neighborSet& ); + neighborSet& operator=( const neighborSet& ); + ~neighborSet(); +\end{verbatim} +\end{footnotesize} + +If you create an neighborSet, you might want to reserve space for it, +to avoid needless reallocations. Also it can be cleared, and you can +ask the size (just like with normal containers): + +\begin{footnotesize} +\begin{verbatim} + void reserve( size_t ); + void clear(); + size_t size() const; +\end{verbatim} +\end{footnotesize} + +Two neighborSets can be merged: + +\begin{footnotesize} +\begin{verbatim} + void merge( const neighborSet& ); +\end{verbatim} +\end{footnotesize} + +A neighborSet can be truncated at a certain level. This is useful +after merging neighborSets. Merging sets with depth k and n will +result in a set with a depth somewhere within the range $[max(k,n), k+n]$. + +\begin{footnotesize} +\begin{verbatim} + void truncate( size_t ); +\end{verbatim} +\end{footnotesize} + +\chapter{Advanced Functions} + +\section{Modifying the InstanceBase} + +The instanceBase can be modified with the functions: + +\begin{footnotesize} +\begin{verbatim} + bool Increment( const std::string& Line ); + bool Decrement( const std::string& Line ); + bool Increment_u( const icu::UnicodeString& Line ); + bool Decrement_u( const icu::UnicodeString& Line ); +\end{verbatim} +\end{footnotesize} + +These functions add an Instance (as described by Line) to the +InstanceBase, or remove it. This can only be done for IB1-like +experiments (IB1, IB2, CV and LOO), and enforces a lot of +statistical recalculations. The {\tt \_u} variants take an ICU +Unicode string; the {\tt std::string} variants interpret their input +as UTF-8. + +More sophisticated are: + +\begin{footnotesize} +\begin{verbatim} + bool Expand( const std::string& File ); + bool Remove( const std::string& File ); +\end{verbatim} +\end{footnotesize} + +which use the contents of File to do a bulk of Increments or Decrements, and +recalculate afterwards. + +\section{Pruning an InstanceBase to an IGTree} +\label{prune} + +New in version 7.0 is the possibility to prune a trained (or read) +IB1 or TRIBL2 instance base into an IGTree, without retraining from +the original data: + +\begin{footnotesize} +\begin{verbatim} + bool Prune( bool restore_distributions = false ); +\end{verbatim} +\end{footnotesize} + +This is the API equivalent of the {\tt --prune} command line +option. A typical use is to read a stored instance base with {\tt + GetInstanceBase()}, optionally {\tt Expand()} it with new material, +{\tt Prune()} it, and store the result with {\tt + WriteInstanceBase()}. After pruning, the experiment behaves like an +IGTree experiment. See the TiMBL Reference Guide \cite{Daelemans+26} +for details on the pruning process. + +\section{Getting more information out of Timbl} + +There are a few convenience functions to get extra information on +TiMBL and its behaviour: + +\begin{footnotesize} +\begin{verbatim} + bool WriteNamesFile( const std::string& f ); +\end{verbatim} +\end{footnotesize} + +Create a file which resembles a C4.5 namesfile. + +\begin{footnotesize} +\begin{verbatim} + Algorithm Algo() +\end{verbatim} +\end{footnotesize} + +Give the current algorithm as a type enum Algorithm. First, the +declaration of the Algorithm type: + +\begin{footnotesize} +\begin{verbatim} + enum Algorithm { UNKNOWN_ALG, IB1, IB2, IGTREE, + TRIBL, TRIBL2, LOO, CV }; +\end{verbatim} +\end{footnotesize} + +This can be printed with the helper function: + +\begin{footnotesize} +\begin{verbatim} + const std::string to_string( const Algorithm ) +\end{verbatim} +\end{footnotesize} + +\begin{footnotesize} +\begin{verbatim} + Weighting CurrentWeighting() +\end{verbatim} +\end{footnotesize} + +Gives the current weighting as a type enum Weighting. + +Declaration of Weighting: + +\begin{footnotesize} +\begin{verbatim} + enum Weighting { UNKNOWN_W, UD, NW, GR, IG, X2, SV, SD }; +\end{verbatim} +\end{footnotesize} + +This can be printed with the helper function: + +\begin{footnotesize} +\begin{verbatim} + const std::string to_string( const Weighting ) +\end{verbatim} +\end{footnotesize} + + +\begin{footnotesize} +\begin{verbatim} + Weighting GetCurrentWeights( std::vector& v ) +\end{verbatim} +\end{footnotesize} + +Returns the current weighting as a type enum Weighting and also a +vector v with all the current values of this weighting. (This +function was called {\tt CurrentWeightings()} before version 6.8.) + +\begin{footnotesize} +\begin{verbatim} + std::string ExpName() +\end{verbatim} +\end{footnotesize} + +Returns the value of 'name' given at the construction of the experiment + +\begin{footnotesize} +\begin{verbatim} + static std::string VersionInfo( bool full = false ) +\end{verbatim} +\end{footnotesize} + +Returns a string containing the Version number, the Revision and the +Revision string of the current API implementation. If full is true, +also information about the date and time of compilation is included. + +\chapter{Server mode} +\label{server} + +Before version 6.4, the API contained a {\tt StartServer()} +function. All server functionality has been removed from TiMBL and +lives in the separate TimblServer +package\footnote{\url{https://github.com/LanguageMachines/timblserver}}, +which wraps one or more trained TiMBL experiments in a network server +speaking a TCP, HTTP or JSON protocol. See the TimblServer manual for +details. + +\clearpage +\chapter{Annotated example programs} + +The example programs and the data files they expect ({\tt + dimin.train}, {\tt dimin.test}, {\tt small\_?.train} and {\tt + cross\_val.test}) can be found in the {\tt demos} directory of the +TiMBL source distribution. + +\subsection{example 1, {\tt api\_test1.cxx}} +\begin{footnotesize} +\begin{verbatim} +#include "timbl/TimblAPI.h" +int main(){ + Timbl::TimblAPI My_Experiment( "-a IGTREE +vDI+DB+F", "test1" ); + My_Experiment.SetOptions( "-w3 -vDB" ); + My_Experiment.ShowSettings( std::cout ); + My_Experiment.Learn( "dimin.train" ); + My_Experiment.Test( "dimin.test", "my_first_test.out" ); + My_Experiment.SetOptions( "-mM" ); + My_Experiment.Test( "dimin.test", "my_first_test.out" ); +} +\end{verbatim} +\end{footnotesize} + + +Output (note that the settings are listed alphabetically nowadays): +\begin{footnotesize} +\begin{verbatim} +Current Experiment Settings : +ALL_WEIGHTS : false +BEAM_SIZE : 0 +BIN_SIZE : 20 +CLIP_FACTOR : 10 +DECAY : Z +DECAYPARAM_A : 1.00000 +DECAYPARAM_B : 1.00000 +DO_DIVERSIFY : false +DO_PRUNE : false +DO_SILLY : false +DO_SLOPPY_LOO : false +EXACT_MATCH : false +EXEMPLAR_WEIGHTS : false +FLENGTH : 0 +GLOBAL_METRIC : O +HANDLE_OCCURRENCES : 0 +HASHED_TREE : true +IB2_OFFSET : 0 +IG_THRESHOLD : 1000 +IGNORE_EXEMPLAR_WEIGHTS : true +INPUTFORMAT : Unknown +KEEP_DISTRIBUTIONS : false +MAXBESTS : 500 +METRICS : +MVD_LIMIT : 1 +NEIGHBORS : 1 +NO_EXEMPLAR_WEIGHTS_TEST : true +NORM_FACTOR : 1.00000 +NORMALISATION : None +PROGRESS : 100000 +SEED : -1 +TARGET_POS : 18446744073709551615 +TREE_ORDER : Unknown +TRIBL_OFFSET : 0 +VERBOSITY : F+DI [Note 1] +WEIGHTING : x2 [Note 2] + +Examine datafile 'dimin.train' gave the following results: +Number of Features: 12 +InputFormat : C4.5 + +-test1-Phase 1: Reading Datafile: dimin.train +-test1-Start: 0 @ Fri Jul 3 10:00:22 2026 +-test1-Finished: 2999 @ Fri Jul 3 10:00:22 2026 +-test1-Calculating Entropy Fri Jul 3 10:00:22 2026 +Lines of data : 2999 +DB Entropy : 1.6178929 +Number of Classes : 5 + +Feats Vals X-square Variance InfoGain GainRatio +1 3 128.41828 0.021410184 0.030971064 0.024891536 + 2 50 364.75812 0.030406645 0.060860038 0.027552191 + 3 19 212.29804 0.017697402 0.039562857 0.018676787 + 4 37 449.83823 0.037499019 0.052541227 0.052620750 + 5 3 288.87218 0.048161417 0.074523225 0.047699231 + 6 61 415.64113 0.034648310 0.10604433 0.024471911 + 7 20 501.33465 0.041791818 0.12348668 0.034953203 + 8 69 367.66021 0.030648567 0.097198760 0.043983864 + 9 2 169.36962 0.056475363 0.045752381 0.046816705 + 10 64 914.61906 0.076243669 0.21388759 0.042844587 + 11 18 2807.0418 0.23399815 0.66970458 0.18507018 + 12 43 7160.3682 0.59689631 1.2780762 0.32537181 + +-test1-Preparation took 0 seconds, 7 milliseconds and 343 microseconds +Feature Permutation based on Chi-Squared : +< 12, 11, 10, 7, 4, 6, 8, 2, 5, 3, 9, 1 > +-test1-Phase 2: Building multi index on Datafile: dimin.train +-test1-Start: 0 @ Fri Jul 3 10:00:22 2026 +-test1-Finished: 2999 @ Fri Jul 3 10:00:22 2026 +-test1- +Phase 3: Learning from Datafile: dimin.train +-test1-Start: 0 @ Fri Jul 3 10:00:22 2026 +-test1-Finished: 2999 @ Fri Jul 3 10:00:22 2026 + +Size of InstanceBase = 148 Nodes, (5920 bytes), 99.61 % compression +-test1-Learning took 0 seconds, 25 milliseconds and 428 microseconds +Examine datafile 'dimin.test' gave the following results: +Number of Features: 12 +InputFormat : C4.5 + + +Starting to test, Testfile: dimin.test +Writing output in: my_first_test.out +Algorithm : IGTree +Weighting : Chi-square +Feature 1 : 128.418283576224439 +Feature 2 : 364.758115277811896 +Feature 3 : 212.298037236345095 +Feature 4 : 449.838231470681876 +Feature 5 : 288.872176256387263 +Feature 6 : 415.641126446691771 +Feature 7 : 501.334653478280984 +Feature 8 : 367.660212489714240 +Feature 9 : 169.369615106487458 +Feature 10 : 914.619058199288816 +Feature 11 : 2807.041753278295346 +Feature 12 : 7160.368151902808677 + +-test1-Tested: 1 @ Fri Jul 3 10:00:22 2026 +-test1-Tested: 2 @ Fri Jul 3 10:00:22 2026 +-test1-Tested: 3 @ Fri Jul 3 10:00:22 2026 +-test1-Tested: 4 @ Fri Jul 3 10:00:22 2026 +-test1-Tested: 5 @ Fri Jul 3 10:00:22 2026 +-test1-Tested: 6 @ Fri Jul 3 10:00:22 2026 +-test1-Tested: 7 @ Fri Jul 3 10:00:22 2026 +-test1-Tested: 8 @ Fri Jul 3 10:00:22 2026 +-test1-Tested: 9 @ Fri Jul 3 10:00:22 2026 +-test1-Tested: 10 @ Fri Jul 3 10:00:22 2026 +-test1-Tested: 100 @ Fri Jul 3 10:00:22 2026 +-test1-Ready: 950 @ Fri Jul 3 10:00:22 2026 +Seconds taken: 0.0719 (13214.63 p/s) + +overall accuracy: 0.962105 (914/950) +Examine datafile 'dimin.test' gave the following results: +Number of Features: 12 +InputFormat : C4.5 + +Warning:-test1-Metric must be Overlap for IGTree test. [Note 3] +\end{verbatim} +\end{footnotesize} + + +Notes: +\begin{enumerate} +\item The first {\tt SetOptions()} sets the verbosity with {\tt +F+DI+DB}. +The second {\tt SetOptions()}, however, sets the verbosity with {\tt -vDB}, and the resulting verbosity is therefore {\tt F+DI}. +\item The {\tt -w2} of the first {\tt SetOptions()} is overruled with + {\tt -w3} from the second {\tt SetOptions()}, resulting in a + weighting of 3 or Chi-Square. +\item Due to the second {\tt SetOptions()}, the default metric is set to +MVDM --- this is however not applicable to IGTREE. This raises a warning +when we start to test. +\end{enumerate} + +Result in my\_first\_test.out (first 20 lines): +\begin{footnotesize} +\begin{verbatim} +=,=,=,=,=,=,=,=,+,p,e,=,T,T 6619.8512628162 +=,=,=,=,+,k,u,=,-,bl,u,m,E,P 2396.8557978603 ++,m,I,=,-,d,A,G,-,d,},t,J,J 6619.8512628162 +-,t,@,=,-,l,|,=,-,G,@,n,T,T 6619.8512628162 +-,=,I,n,-,str,y,=,+,m,E,nt,J,J 6619.8512628162 +=,=,=,=,=,=,=,=,+,br,L,t,J,J 6619.8512628162 +=,=,=,=,+,zw,A,=,-,m,@,r,T,T 6619.8512628162 +=,=,=,=,-,f,u,=,+,dr,a,l,T,T 6619.8512628162 +=,=,=,=,=,=,=,=,+,l,e,w,T,T 13780.219414719 +=,=,=,=,+,tr,K,N,-,k,a,rt,J,J 6619.8512628162 +=,=,=,=,+,=,o,=,-,p,u,=,T,T 3812.8095095379 +=,=,=,=,=,=,=,=,+,l,A,m,E,E 3812.8095095379 +=,=,=,=,=,=,=,=,+,l,A,p,J,J 6619.8512628162 +=,=,=,=,=,=,=,=,+,sx,E,lm,P,P 6619.8512628162 ++,l,a,=,-,d,@,=,-,k,A,st,J,J 6619.8512628162 +-,s,i,=,-,f,E,r,-,st,O,k,J,J 6619.8512628162 +=,=,=,=,=,=,=,=,+,sp,a,n,T,T 6619.8512628162 +=,=,=,=,=,=,=,=,+,st,o,t,J,J 6619.8512628162 +=,=,=,=,+,sp,a,r,-,b,u,k,J,J 6619.8512628162 ++,h,I,N,-,k,@,l,-,bl,O,k,J,J 6619.8512628162 +\end{verbatim} +\end{footnotesize} +\clearpage + +\subsection{example 2, {\tt api\_test2.cxx}} + +This demonstrates IB2 learning. Our example program: + +\begin{footnotesize} +\begin{verbatim} +#include +#include "timbl/TimblAPI.h" +int main(){ + Timbl::TimblAPI *My_Experiment + = new Timbl::TimblAPI( "-a IB2 +vF+DI+DB" , "test2" ); + My_Experiment->SetOptions( "-b100" ); + My_Experiment->ShowSettings( std::cout ); + My_Experiment->Learn( "dimin.train" ); + My_Experiment->Test( "dimin.test", "my_second_test.out" ); + delete My_Experiment; + exit(1); +} +\end{verbatim} +\end{footnotesize} + +We create an experiment for the IB2 algorithm, with the {\tt -b} option set +to 100, so the first 100 lines of {\tt dimin.train} will be used to +bootstrap the learning, as we can see from the output (the initial +settings dump is omitted here; it is analogous to the one in example +1, with {\tt IB2\_OFFSET : 100}): + +\begin{footnotesize} +\begin{verbatim} +Examine datafile 'dimin.train' gave the following results: +Number of Features: 12 +InputFormat : C4.5 + +-test2-Phase 1: Reading Datafile: dimin.train +-test2-Start: 0 @ Fri Jul 3 10:00:23 2026 +-test2-Finished: 2999 @ Fri Jul 3 10:00:23 2026 +-test2-Calculating Entropy Fri Jul 3 10:00:23 2026 +Lines of data : 2999 [Note 1] +DB Entropy : 1.6178929 +Number of Classes : 5 + +Feats Vals InfoGain GainRatio +1 3 0.030971064 0.024891536 + 2 50 0.060860038 0.027552191 + 3 19 0.039562857 0.018676787 + 4 37 0.052541227 0.052620750 + 5 3 0.074523225 0.047699231 + 6 61 0.10604433 0.024471911 + 7 20 0.12348668 0.034953203 + 8 69 0.097198760 0.043983864 + 9 2 0.045752381 0.046816705 + 10 64 0.21388759 0.042844587 + 11 18 0.66970458 0.18507018 + 12 43 1.2780762 0.32537181 + +-test2-Preparation took 0 seconds, 12 milliseconds and 393 microseconds +Feature Permutation based on GainRatio/Values : +< 9, 5, 11, 1, 12, 7, 4, 3, 10, 8, 2, 6 > +-test2-Phase 2: Learning from Datafile: dimin.train +-test2-Start: 0 @ Fri Jul 3 10:00:23 2026 +-test2-Finished: 100 @ Fri Jul 3 10:00:23 2026 + +Size of InstanceBase = 954 Nodes, (38160 bytes), 26.62 % compression +-test2-Learning took 0 seconds, 0 milliseconds and 409 microseconds +-test2-Phase 2: Appending from Datafile: dimin.train (starting at line 101) +-test2-Start: 101 @ Fri Jul 3 10:00:23 2026 +-test2-Learning: 100 @ Fri Jul 3 10:00:23 2026 added:9 +-test2-Learning: 101 @ Fri Jul 3 10:00:23 2026 added:0 +-test2-Learning: 102 @ Fri Jul 3 10:00:23 2026 added:0 +-test2-Learning: 103 @ Fri Jul 3 10:00:23 2026 added:0 +-test2-Learning: 104 @ Fri Jul 3 10:00:23 2026 added:0 +-test2-Learning: 105 @ Fri Jul 3 10:00:23 2026 added:0 +-test2-Learning: 106 @ Fri Jul 3 10:00:23 2026 added:0 +-test2-Learning: 107 @ Fri Jul 3 10:00:23 2026 added:0 +-test2-Learning: 108 @ Fri Jul 3 10:00:23 2026 added:0 +-test2-Learning: 109 @ Fri Jul 3 10:00:23 2026 added:0 +-test2-Learning: 110 @ Fri Jul 3 10:00:23 2026 added:0 +-test2-Learning: 200 @ Fri Jul 3 10:00:23 2026 added:5 +-test2-Learning: 1100 @ Fri Jul 3 10:00:23 2026 added:65 +-test2-Finished: 2898 @ Fri Jul 3 10:00:23 2026 +in total added 173 new entries [Note 2] + +Size of InstanceBase = 2232 Nodes, (89280 bytes), 32.40 % compression +DB Entropy : 1.61789286 +Number of Classes : 5 + +Feats Vals InfoGain GainRatio + 1 3 0.03097106 0.02489154 + 2 50 0.06086004 0.02755219 + 3 19 0.03956286 0.01867679 + 4 37 0.05254123 0.05262075 + 5 3 0.07452322 0.04769923 + 6 61 0.10604433 0.02447191 + 7 20 0.12348668 0.03495320 + 8 69 0.09719876 0.04398386 + 9 2 0.04575238 0.04681670 + 10 64 0.21388759 0.04284459 + 11 18 0.66970458 0.18507018 + 12 43 1.27807625 0.32537181 + +Examine datafile 'dimin.test' gave the following results: +Number of Features: 12 +InputFormat : C4.5 + + +Starting to test, Testfile: dimin.test +Writing output in: my_second_test.out +Algorithm : IB2 +Global metric : Overlap +Deviant Feature Metrics:(none) +Weighting : GainRatio +Feature 1 : 0.026241147173103 +Feature 2 : 0.030918769841214 +Feature 3 : 0.021445836516602 +Feature 4 : 0.056561885447060 +Feature 5 : 0.048311436541460 +Feature 6 : 0.027043360641622 +Feature 7 : 0.037453180788027 +Feature 8 : 0.044999091421718 +Feature 9 : 0.048992032381874 +Feature 10 : 0.044544230779268 +Feature 11 : 0.185449683494634 +Feature 12 : 0.324719540921155 + +-test2-Tested: 1 @ Fri Jul 3 10:00:23 2026 +-test2-Tested: 2 @ Fri Jul 3 10:00:23 2026 +-test2-Tested: 3 @ Fri Jul 3 10:00:23 2026 +-test2-Tested: 4 @ Fri Jul 3 10:00:23 2026 +-test2-Tested: 5 @ Fri Jul 3 10:00:23 2026 +-test2-Tested: 6 @ Fri Jul 3 10:00:23 2026 +-test2-Tested: 7 @ Fri Jul 3 10:00:23 2026 +-test2-Tested: 8 @ Fri Jul 3 10:00:23 2026 +-test2-Tested: 9 @ Fri Jul 3 10:00:23 2026 +-test2-Tested: 10 @ Fri Jul 3 10:00:23 2026 +-test2-Tested: 100 @ Fri Jul 3 10:00:23 2026 +-test2-Ready: 950 @ Fri Jul 3 10:00:23 2026 +Seconds taken: 0.1065 (8922.79 p/s) + +overall accuracy: 0.940000 (893/950), of which 15 exact matches +There were 43 ties of which 31 (72.09%) were correctly resolved + [Note 3] +\end{verbatim} +\end{footnotesize} + + +Notes: +\begin{enumerate} +\item IB2 is bootstrapped with 100 lines, but for the statistics all 2999 + lines are used. +\item As we see here, 173 entries from the input file had a mismatch, +and were therefore entered in the Instancebase. +\item We see that IB2 scores 94.00 \%, compared to 96.21 \% for IGTREE + in our first example. For this data, IB2 is not a good + algorithm. However, it saves a lot of space, and is faster than + IB1. Yet, IGTREE is both faster and better. Had we used IB1, the + score would have been 96.84 \%. +\end{enumerate} +\clearpage + +\subsection{example 3, {\tt api\_test3.cxx}} + +This demonstrates Cross Validation. Let's try the following program: + +\begin{footnotesize} +\begin{verbatim} +#include +#include "timbl/TimblAPI.h" +using Timbl::TimblAPI; + +int main(){ + TimblAPI *My_Experiment = new TimblAPI( "-t cross_validate" ); + My_Experiment->Test( "cross_val.test" ); + delete My_Experiment; + exit(0); +} +\end{verbatim} +\end{footnotesize} + +This program creates an experiment, which defaults to IB1 and because of the +special option ``-t cross\_validate'' will start a CrossValidation +experiment.\\ +Learn() is not possible now. We must use a special form of Test(). + +``cross\_val.test'' is a file with the following content: +\begin{footnotesize} +\begin{verbatim} +small_1.train +small_2.train +small_3.train +small_4.train +small_5.train +\end{verbatim} +\end{footnotesize} + + +All these files contain an equal part of a bigger dataset, and +My\_Experiment will run a CrossValidation test between these files. +Note that output filenames are generated and that you cannot influence +that. + +The output of this program is (the folds for {\tt small\_2.train} to +{\tt small\_4.train} are omitted; they are analogous to the first +fold): + +\begin{footnotesize} +\begin{verbatim} +Starting Cross validation test on files: +small_1.train +small_2.train +small_3.train +small_4.train +small_5.train +Examine datafile 'small_1.train' gave the following results: +Number of Features: 8 +InputFormat : C4.5 + + +Starting to test, Testfile: small_1.train +Writing output in: small_1.train.cv +Algorithm : CV +Global metric : Overlap +Deviant Feature Metrics:(none) +Weighting : GainRatio + +Tested: 1 @ Fri Jul 3 10:00:24 2026 +Tested: 2 @ Fri Jul 3 10:00:24 2026 +Tested: 3 @ Fri Jul 3 10:00:24 2026 +Tested: 4 @ Fri Jul 3 10:00:24 2026 +Tested: 5 @ Fri Jul 3 10:00:24 2026 +Tested: 6 @ Fri Jul 3 10:00:24 2026 +Tested: 7 @ Fri Jul 3 10:00:24 2026 +Tested: 8 @ Fri Jul 3 10:00:24 2026 +Tested: 9 @ Fri Jul 3 10:00:24 2026 +Tested: 10 @ Fri Jul 3 10:00:24 2026 +Ready: 10 @ Fri Jul 3 10:00:24 2026 +Seconds taken: 0.0026 (3785.01 p/s) + +overall accuracy: 0.800000 (8/10) + +[... folds 2, 3 and 4: accuracies 0.800000, 0.900000, 0.800000 ...] + +Examine datafile 'small_5.train' gave the following results: +Number of Features: 8 +InputFormat : C4.5 + + +Starting to test, Testfile: small_5.train +Writing output in: small_5.train.cv +Algorithm : CV +Global metric : Overlap +Deviant Feature Metrics:(none) +Weighting : GainRatio + +Tested: 1 @ Fri Jul 3 10:00:24 2026 +Tested: 2 @ Fri Jul 3 10:00:24 2026 +Tested: 3 @ Fri Jul 3 10:00:24 2026 +Tested: 4 @ Fri Jul 3 10:00:24 2026 +Tested: 5 @ Fri Jul 3 10:00:24 2026 +Tested: 6 @ Fri Jul 3 10:00:24 2026 +Tested: 7 @ Fri Jul 3 10:00:24 2026 +Tested: 8 @ Fri Jul 3 10:00:24 2026 +Ready: 8 @ Fri Jul 3 10:00:24 2026 +Seconds taken: 0.0003 (29962.55 p/s) + +overall accuracy: 1.000000 (8/8) +\end{verbatim} +\end{footnotesize} + + +What has happened here? + +\begin{enumerate} +\item TiMBL trained itself with inputfiles small\_2.train through +small\_5.train. (in fact using the {\tt Expand()} API call. +\item Then TiMBL tested small\_1.train against the InstanceBase. +\item Next, small\_2.train is removed from the database (API call {\tt +Remove()} ) and small\_1.train is added. +\item Then small\_2.train is tested against the InstanceBase. +\item And so forth with small\_3.train $\ldots$ +\end{enumerate} +\clearpage + +\subsection{example 4, {\tt api\_test4.cxx}} + +This program demonstrates adding and deleting of the InstanceBase. It +also proves that weights are (re)calculated correctly each time (which +also explains why this is a time-consuming thing to do). After running +this program, wg.1.wgt should be equal to wg.5.wgt and wg.2.wgt equal to +wg.4.wgt . Important to note is also, that while we do not use a weighting +of X2 or SV here, only the ``simple'' weights are calculated and +stored. + +Further, arr.1.arr should be equal to arr.5.arr and arr.2.arr should be equal +to arr.4.arr + +First the program: + +\begin{footnotesize} +\begin{verbatim} +#include +#include +#include "timbl/TimblAPI.h" +using namespace Timbl; + +int main(){ + TimblAPI *My_Experiment = new TimblAPI( "-a IB1 +vDI+DB +mM" , + "test4" ); + My_Experiment->ShowSettings( std::cout ); + My_Experiment->Learn( "dimin.train" ); + My_Experiment->Test( "dimin.test", "inc1.out" ); + My_Experiment->SaveWeights( "wg.1.wgt" ); + My_Experiment->WriteArrays( "arr.1.arr" ); + My_Experiment->Increment( "=,=,=,=,+,k,e,=,-,r,@,l,T" ); + My_Experiment->Test( "dimin.test", "inc2.out" ); + My_Experiment->SaveWeights( "wg.2.wgt" ); + My_Experiment->WriteArrays( "arr.2.arr" ); + My_Experiment->Increment( "+,zw,A,rt,-,k,O,p,-,n,O,n,E" ); + My_Experiment->Test( "dimin.test", "inc3.out" ); + My_Experiment->SaveWeights( "wg.3.wgt" ); + My_Experiment->WriteArrays( "arr.3.arr" ); + My_Experiment->Decrement( "+,zw,A,rt,-,k,O,p,-,n,O,n,E" ); + My_Experiment->Test( "dimin.test", "inc4.out" ); + My_Experiment->SaveWeights( "wg.4.wgt" ); + My_Experiment->WriteArrays( "arr.4.arr" ); + My_Experiment->Decrement( "=,=,=,=,+,k,e,=,-,r,@,l,T" ); + My_Experiment->Test( "dimin.test", "inc5.out" ); + My_Experiment->SaveWeights( "wg.5.wgt" ); + My_Experiment->WriteArrays( "arr.5.arr" ); + delete My_Experiment; + exit(1); +} +\end{verbatim} +\end{footnotesize} + + +This produces the following output (the settings dump and the +near-identical blocks for {\tt inc2.out} to {\tt inc4.out} are +omitted): + +\begin{footnotesize} +\begin{verbatim} +Examine datafile 'dimin.train' gave the following results: +Number of Features: 12 +InputFormat : C4.5 + +-test4-Phase 1: Reading Datafile: dimin.train +-test4-Start: 0 @ Fri Jul 3 11:27:09 2026 +-test4-Finished: 2999 @ Fri Jul 3 11:27:09 2026 +-test4-Calculating Entropy Fri Jul 3 11:27:09 2026 +-test4-Preparation took 0 seconds, 10 milliseconds and 277 microseconds +Feature Permutation based on GainRatio/Values : +< 9, 5, 11, 1, 12, 7, 4, 3, 10, 8, 2, 6 > +-test4-Phase 2: Building multi index on Datafile: dimin.train +-test4-Start: 0 @ Fri Jul 3 11:27:09 2026 +-test4-Finished: 2999 @ Fri Jul 3 11:27:09 2026 +-test4- +Phase 3: Learning from Datafile: dimin.train +-test4-Start: 0 @ Fri Jul 3 11:27:09 2026 +-test4-Finished: 2999 @ Fri Jul 3 11:27:09 2026 + +Size of InstanceBase = 19231 Nodes, (769240 bytes), 49.77 % compression +-test4-Learning took 0 seconds, 33 milliseconds and 299 microseconds +Examine datafile 'dimin.test' gave the following results: +Number of Features: 12 +InputFormat : C4.5 + + +Starting to test, Testfile: dimin.test +Writing output in: inc1.out +Algorithm : IB1 +Global metric : Value Difference, Prestored matrix +Deviant Feature Metrics:(none) +Size of value-matrix[1] = 96 Bytes +Size of value-matrix[2] = 704 Bytes +Size of value-matrix[3] = 704 Bytes +Size of value-matrix[4] = 96 Bytes +Size of value-matrix[5] = 96 Bytes +Size of value-matrix[6] = 1496 Bytes +Size of value-matrix[7] = 1496 Bytes +Size of value-matrix[8] = 336 Bytes +Size of value-matrix[9] = 56 Bytes +Size of value-matrix[10] = 2376 Bytes +Size of value-matrix[11] = 1344 Bytes +Size of value-matrix[12] = 936 Bytes +Total Size of value-matrices 9736 Bytes + +Weighting : GainRatio + +-test4-Tested: 1 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 2 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 3 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 4 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 5 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 6 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 7 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 8 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 9 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 10 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 100 @ Fri Jul 3 11:27:09 2026 +-test4-Ready: 950 @ Fri Jul 3 11:27:09 2026 +Seconds taken: 0.0190 (50113.41 p/s) + +overall accuracy: 0.963158 (915/950), of which 62 exact matches +There were 6 ties of which 5 (83.33%) were correctly resolved +-test4-Saving Weights in wg.1.wgt +-test4-Saving Probability Arrays in arr.1.arr + +[... the blocks for inc2.out, inc3.out and inc4.out are analogous, + with an Increment() or Decrement() preceding each of them ...] + +Starting to test, Testfile: dimin.test +Writing output in: inc5.out +Algorithm : IB1 +Global metric : Value Difference, Prestored matrix +Deviant Feature Metrics:(none) +Size of value-matrix[1] = 96 Bytes +Size of value-matrix[2] = 704 Bytes +Size of value-matrix[3] = 704 Bytes +Size of value-matrix[4] = 96 Bytes +Size of value-matrix[5] = 96 Bytes +Size of value-matrix[6] = 1496 Bytes +Size of value-matrix[7] = 1496 Bytes +Size of value-matrix[8] = 336 Bytes +Size of value-matrix[9] = 56 Bytes +Size of value-matrix[10] = 2376 Bytes +Size of value-matrix[11] = 1344 Bytes +Size of value-matrix[12] = 936 Bytes +Total Size of value-matrices 9736 Bytes + +Weighting : GainRatio + +-test4-Tested: 1 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 2 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 3 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 4 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 5 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 6 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 7 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 8 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 9 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 10 @ Fri Jul 3 11:27:09 2026 +-test4-Tested: 100 @ Fri Jul 3 11:27:09 2026 +-test4-Ready: 950 @ Fri Jul 3 11:27:09 2026 +Seconds taken: 0.0181 (52448.52 p/s) + +overall accuracy: 0.963158 (915/950), of which 62 exact matches +There were 6 ties of which 5 (83.33%) were correctly resolved +-test4-Saving Weights in wg.5.wgt +-test4-Saving Probability Arrays in arr.5.arr +\end{verbatim} +\end{footnotesize} +\clearpage + +\subsection{example 5, {\tt api\_test5.cxx}} + +This program demonstrates the use of neighborSets to classify and +store results. It also demonstrates some neighborSet basics. Note the +use of {\tt icu::UnicodeString} for the instances. + +\begin{footnotesize} +\begin{verbatim} +#include +#include "timbl/TimblAPI.h" + +using std::endl; +using std::cout; +using std::string; +using namespace Timbl; + +int main(){ + TimblAPI *My_Experiment = new TimblAPI( "-a IB1 +vDI+DB+n +mM +k4 " , + "test5" ); + My_Experiment->Learn( "dimin.train" ); + { + icu::UnicodeString line = "=,=,=,=,+,k,e,=,-,r,@,l,T"; + const neighborSet *neighbours1 = My_Experiment->classifyNS( line ); + if ( neighbours1 ){ + cout << "Classify OK on " << line << endl; + cout << neighbours1; + } + else { + cout << "Classify failed on " << line << endl; + neighbours1 = new neighborSet(); + } + neighborSet neighbours2; + line = "+,zw,A,rt,-,k,O,p,-,n,O,n,E"; + if ( My_Experiment->classifyNS( line, neighbours2 ) ){ + cout << "Classify OK on " << line << endl; + cout << neighbours2; + } + else { + cout << "Classify failed on " << line << endl; + } + line = "+,z,O,n,-,d,A,xs,-,=,A,rm,P"; + const neighborSet *neighbours3 = My_Experiment->classifyNS( line ); + if ( neighbours3 ){ + cout << "Classify OK on " << line << endl; + cout << neighbours3; + } + else { + cout << "Classify failed on " << line << endl; + neighbours3 = new neighborSet(); + } + neighborSet uit2; + { + neighborSet uit; + uit.setShowDistance(true); + uit.setShowDistribution(true); + cout << " before first merge " << endl; + cout << uit; + uit.merge( *neighbours1 ); + cout << " after first merge " << endl; + cout << uit; + uit.merge( *neighbours3 ); + cout << " after second merge " << endl; + cout << uit; + uit.merge( neighbours2 ); + cout << " after third merge " << endl; + cout << uit; + uit.truncate( 3 ); + cout << " after truncate " << endl; + cout << uit; + cout << " test assignment" << endl; + uit2 = *neighbours1; + } + cout << "assignment result: " << endl; + cout << uit2; + { + cout << " test copy construction" << endl; + neighborSet uit(uit2); + cout << "result: " << endl; + cout << uit; + } + cout << "almost done!" << endl; + } + delete My_Experiment; + cout << "done!" << endl; +} +\end{verbatim} +\end{footnotesize} + +Its expected output is (without further comment): + +\begin{footnotesize} +\begin{verbatim} +Examine datafile 'dimin.train' gave the following results: +Number of Features: 12 +InputFormat : C4.5 + +-test5-Phase 1: Reading Datafile: dimin.train +-test5-Start: 0 @ Fri Jul 3 10:00:25 2026 +-test5-Finished: 2999 @ Fri Jul 3 10:00:25 2026 +-test5-Calculating Entropy Fri Jul 3 10:00:25 2026 +-test5-Preparation took 0 seconds, 12 milliseconds and 787 microseconds +Feature Permutation based on GainRatio/Values : +< 9, 5, 11, 1, 12, 7, 4, 3, 10, 8, 2, 6 > +-test5-Phase 2: Building multi index on Datafile: dimin.train +-test5-Start: 0 @ Fri Jul 3 10:00:25 2026 +-test5-Finished: 2999 @ Fri Jul 3 10:00:25 2026 +-test5- +Phase 3: Learning from Datafile: dimin.train +-test5-Start: 0 @ Fri Jul 3 10:00:25 2026 +-test5-Finished: 2999 @ Fri Jul 3 10:00:25 2026 + +Size of InstanceBase = 19231 Nodes, (769240 bytes), 49.77 % compression +-test5-Learning took 0 seconds, 29 milliseconds and 875 microseconds +Classify OK on =,=,=,=,+,k,e,=,-,r,@,l,T +# k=1 { T 1.00000 } 0.00000000000000 +# k=2 { T 1.00000 } 0.00318629024734 +# k=3 { T 1.00000 } 0.00341823151183 +# k=4 { T 1.00000 } 0.00374337728446 +Classify OK on +,zw,A,rt,-,k,O,p,-,n,O,n,E +# k=1 { E 1.00000 } 0.00000000000000 +# k=2 { E 1.00000 } 0.05666788032719 +# k=3 { E 1.00000 } 0.06255263661774 +# k=4 { E 1.00000 } 0.06442386036189 +Classify OK on +,z,O,n,-,d,A,xs,-,=,A,rm,P +# k=1 { P 1.00000 } 0.05972983625517 +# k=2 { P 1.00000 } 0.08774076913265 +# k=3 { P 1.00000 } 0.08844278891972 +# k=4 { P 1.00000 } 0.09705864995143 + before first merge + after first merge +# k=1 { P 1.00000 } 0.05972983625517 +# k=2 { P 1.00000 } 0.08774076913265 +# k=3 { P 1.00000 } 0.08844278891972 +# k=4 { P 1.00000 } 0.09705864995143 + after second merge +# k=1 { P 2.00000 } 0.05972983625517 +# k=2 { P 2.00000 } 0.08774076913265 +# k=3 { P 2.00000 } 0.08844278891972 +# k=4 { P 2.00000 } 0.09705864995143 + after third merge +# k=1 { E 1.00000 } 0.00000000000000 +# k=2 { E 1.00000 } 0.05666788032719 +# k=3 { P 2.00000 } 0.05972983625517 +# k=4 { E 1.00000 } 0.06255263661774 +# k=5 { E 1.00000 } 0.06442386036189 +# k=6 { P 2.00000 } 0.08774076913265 +# k=7 { P 2.00000 } 0.08844278891972 +# k=8 { P 2.00000 } 0.09705864995143 + after truncate +# k=1 { E 1.00000 } 0.00000000000000 +# k=2 { E 1.00000 } 0.05666788032719 +# k=3 { P 2.00000 } 0.05972983625517 + test assignment +assignment result: +# k=1 { P 1.00000 } 0.05972983625517 +# k=2 { P 1.00000 } 0.08774076913265 +# k=3 { P 1.00000 } 0.08844278891972 +# k=4 { P 1.00000 } 0.09705864995143 + test copy construction +result: +# k=1 { P 1.00000 } 0.05972983625517 +# k=2 { P 1.00000 } 0.08774076913265 +# k=3 { P 1.00000 } 0.08844278891972 +# k=4 { P 1.00000 } 0.09705864995143 +almost done! +done! +\end{verbatim} +\end{footnotesize} +\clearpage + +\subsection{example 6, {\tt api\_test6.cxx}} + +This program demonstrates the use of ClassDistributions, TargetValues +and neighborSets for classification. Note the new iterator interface +({\tt *it}, {\tt it->Value()}, {\tt it->Weight()}) and the use of a +normalisation ({\tt -G 0}), which makes the distribution weights +probabilities. + +\begin{footnotesize} +\begin{verbatim} +#include +#include "timbl/TimblAPI.h" + +using std::cout; +using std::endl; +using namespace Timbl; + +int main(){ + TimblAPI My_Experiment( "-a IB1 +vDI+DB -G 0 -k3", "test6" ); + My_Experiment.Learn( "dimin.train" ); + const ClassDistribution *vd; + const TargetValue *tv + = My_Experiment.Classify( std::string("-,=,O,m,+,h,K,=,-,n,I,N,K"), vd ); + cout << "resulting target: " << tv << endl; + cout << "resulting Distribution: " << vd << endl; + ClassDistribution::dist_iterator it=vd->begin(); + while ( it != vd->end() ){ + cout << *it << " OR "; + cout << it->Value() << " " << it->Weight() << endl; + ++it; + } + + cout << "the same with neighborSets" << endl; + const neighborSet *nb = My_Experiment.classifyNS( "-,=,O,m,+,h,K,=,-,n,I,N,K" ); + WClassDistribution *vd2 = nb->bestDistribution(); + vd2->Normalize(); + cout << "default answer " << vd2 << endl; + decayStruct *dc = new expDecay(0.3); + delete vd2; + vd2 = nb->bestDistribution( dc ); + delete dc; + cout << "with exponenial decay, alpha = 0.3 " << vd2 << endl; + delete vd2; +} +\end{verbatim} +\end{footnotesize} + +This is the output produced: + +\begin{footnotesize} +\begin{verbatim} +Examine datafile 'dimin.train' gave the following results: +Number of Features: 12 +InputFormat : C4.5 + +-test6-Phase 1: Reading Datafile: dimin.train +-test6-Start: 0 @ Fri Jul 3 11:27:14 2026 +-test6-Finished: 2999 @ Fri Jul 3 11:27:14 2026 +-test6-Calculating Entropy Fri Jul 3 11:27:14 2026 +-test6-Preparation took 0 seconds, 11 milliseconds and 245 microseconds +Feature Permutation based on GainRatio/Values : +< 9, 5, 11, 1, 12, 7, 4, 3, 10, 8, 2, 6 > +-test6-Phase 2: Building multi index on Datafile: dimin.train +-test6-Start: 0 @ Fri Jul 3 11:27:14 2026 +-test6-Finished: 2999 @ Fri Jul 3 11:27:14 2026 +-test6- +Phase 3: Learning from Datafile: dimin.train +-test6-Start: 0 @ Fri Jul 3 11:27:14 2026 +-test6-Finished: 2999 @ Fri Jul 3 11:27:14 2026 + +Size of InstanceBase = 19231 Nodes, (769240 bytes), 49.77 % compression +-test6-Learning took 0 seconds, 29 milliseconds and 168 microseconds +resulting target: K +resulting Distribution: { E 0.125000, K 0.875000 } +E 0.125000 OR E 0.125000 +K 0.875000 OR K 0.875000 +the same with neighborSets +default answer { E 0.125000, K 0.875000 } +with exponenial decay, alpha = 0.3 { E 0.971556, K 6.69810 } +\end{verbatim} +\end{footnotesize} + +\clearpage + +\begin{thebibliography}{1} + +\bibitem{Daelemans+26} +Walter Daelemans, Jakub Zavrel, Ko van der Sloot, and Antal van den + Bosch (2026). +\newblock {\em {TiMBL}: Tilburg Memory-Based Learner, version 7.0, + Reference Guide}. +\newblock Available from \timblmanualurl. + +\end{thebibliography} + +\end{document}