I am, with some friends, developing a serious game about correcting spelling mistakes.
The first version was developed in Java, but we want to start again from scratch, and we decided to use C++/Qt this time.

In this game, we take a text, we create mistakes, and the player needs to correct them, so the mistakes need to be credible. To achieve this with Java, we used LanguageTool (LT) to retrieve the type of each word and insert a mistake into it.

The problem is, LT only works in Java, and we want to work fully with C/C++ stuff for efficiency. We just need a part of speech tagger (POS), but we failed to find a good one for us. The closest to our needs is probably YamCha but it's undocumented and has been abandoned since 2005.

Is there any library that does the job, has easy to use POS tagging, is lightweight and written fully in C++? The only ones I found were old or not written in C++. It needs to work with French too, but I suppose every POS tagger does that, no?

  • "I suppose every POS tagger does that, no?" no. Did you find any good libs? yesterday

2 Answers 2


The following C++ libraries could do the job:

Other links can be found there.


From https://nlp.stanford.edu/links/statnlp.html#Taggers:

  • ACOPOST (formerly ICOPOST). Open source C taggers originally written by by Ingo Schröder. Implements maximum entropy, HMM trigram, and transformation-based learning. C source available under GNU public license.
  • fnTBL A fast and flexible implementation of Transformation-Based Learning in C++. Includes a POS tagger, but also NP chunking and general chunking models.
  •  YamCha SVM-based NP-chunker, also usable for POS tagging, NER, etc. C/C++ open source. Won CoNLL 2000 shared task. (Less automatic than a specialized POS tagger for an end user.)
  • The venerable Brill's Transformation-based learning Tagger. A symbolic tagger, written in C. It's no longer available from a canonical location, but you might find a version from the Wikipedia page or you could try a reimplementation such as fnTBL

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.