Maximum Entropy Modeling Toolkit for Python and C++

Introduction | License | Download | Document | FAQ(new) | History | Contact

News

Introduction

The Maximum Entropy Toolkit provides a set of tools and library for constructing maximum entropy (maxent) model in either Python or C++.

Maxent Entropy Model is a general purpose machine learning framework that has proved to be highly expressive and powerful in statistical natural language processing, statistical physics, computer vision and many other fields. Please see my maxent page for more information on maxent. right place.
If you do not like this Toolkit, you can still try several other ME implementations.

Features

Current version has the following highlights:

Supported Platforms and Compilers

The toolkit is written in ISO C++ with speed and portability in mind. It has been tested under the following OS/Compilers:

License

This software is freeware and is released under LGPL license. Please consult the LICENSE file in source package for more information.

The adoption of LGPL is in accord with the license of java maxent project: http://maxent.sourceforge.net, from which the toolkit was derived. LGPL makes it easier to share source code, as well as new ideas, between both projects.

Download

Here's a list of files you can download. Please note:

File NameMD5 SumDescription
Source Code    
maxent-20041229.tar.gz b9181d6f2ed97815fa6246f43d8c5464The source code of the latest version plus document
Various Binaries    
maxent-20041229-linux-static.tar.gz de12f65e8935c2c81aaca0c0c628377dStatically linked binary for Linux
maxent-20041229-mingw32-static.zip 1f4e8a49f226f16b99e27d9db0b08534Statically linked win32 binary cross compiled from a Linux box
maxent-20041229.win32-py2.3.exe 3201e53e5bbe3a7df53d25bd93738865 Win32 Python23 extension setup program (built with MSVC7.1 + Intel Fortran 8.0)
maxent-20041229.win32.zip 487c5e69053b5f6a51c85f55f9cf0869 Win32 Python23 extension package (just extract all files to your python directory if you failed to run the above one)
Other Files    
jam.exe 9992097c5ead36f3dd54f34e8e20302eWin32 Jam binary, you need this in order to build the software on win32 with compilers other than GCC
tagger.tar.gz 3dea4c7c2683e6021d89a9d7c9932c5c(Optional) The example POS tagging model that was trained on WSJ 00-18 sections is now downloaded separately (see document for more information)

Document

Here is the PDF manual. Alternatively, you can generate HTML reference document by running "doxygen" in the doc/ directory if you have Doxygen installed.

FAQ

History

Back to the year 2002, as I got more knowledge on maxent I decided to do some experiments to assess the usefulness of the framework. Unfortunately, unlike other popular machine learning techniques such as SVMs, which have many off-the-shelf implementations on the net, only few maxent packages can be found from the internet. Partly because implementing a maxent model is a non-trival work, especially the iterative parameter estimating procedure.

After trying several maxent implementations, I found the java maxent package is a high quality, easy use one. The software is part of the OpenNLP project and is written in Java. But I want a C++ or Python solution that can be integrated into my existing code. Then, I began rewriting the java code in C++. Hopefully, it is relatively easy to translate java code into C++ (but not vice versa) and by the end of 2002 I finished the first C++ version. The speed of C++ is impressive: optimized C++ code ourperforms java code by a wide margin.

In the spring of 2003, python binding was added, utilizing Boost.Python lib. Later I found Dr. Malouf's paper, which proposes to use Limited Memory BFGS Method to estimate ME model's parameters. His experiment showed L-BFGS was much faster than GIS and IIS. So, I added L-BFGS estimating code in May. 2003. Meanwhile, I swithed the project form autoconf/automake to SCons, a much better make replacement written in Python. Later, in April. 2003 I came across Curran and Clark's paper, which proves a correction-free version of GIS algorithm (originally pointed out by [Goodman, 2002]), elimiting the need of correction feature in GIS. I readily adopted the idea and greatly simplified the GIS code.

In September, 2003, documentation was added and the toolkit was put to public release.

Acknowledgment

The author owns his thanks to:

Contact

If you have any questions or comments regarding the use of the software, the application of MaxEnt technique, or simply want to have a (related) discussion with me, feel free to drop me a line:

The Author: Zhang Le < ejoy@users.sourceforge.net>


Last Change :12-Apr-2005. Please send any question to Zhang Le