A C++ implementation of tree kernels per Alessandro Moschitti's 2006 paper, "Making Tree Kernels Practical for Natural Language Learning"
(ROOT (S (NP (PRP$ My) (NN dog)) (ADVP (RB also)) (VP (VBZ likes) (S (VP (VBG eating) (NP (NN sausage))))) (. .)))
This TreeKernel source is MIT licensed (see LICENSE), and commercially useable. If you need a different one just ask.
Though one person has used this without an SVM, I intended to integrate this into an SVM library, though I never got around to it. The two libraries I had in mind were: libSVM - github, home and: Dlib - home
Feel free to integrate it yourself, I'd love to hear about it if you do.
This is GNU Makefile, and GCC based, but nothing is OS-dependent so it should be easily tweakable for other systems.
cd tree-parser make cd ../tree-kernel make
There are several optimizations possible - templating out sigma, making NodePairsDeltaTable an unordered_map, but most of all, storing the Nodes in Sentence in a vector and using indices as pointers to them (to save memory and cache). C bindings would be nice, too.
If you make any improvements I'll be happy to take them. Of course, you can just do what you want with it.