Ich denke, dass der Stanford Parser eines der besten und umfassendsten NLP-Tools ist, das kostenlos verfügbar ist: Es ermöglicht nicht nur das Parsen der strukturellen Abhängigkeiten (um Nomen/Adjektive zu zählen), sondern gibt Ihnen auch die grammatischen Abhängigkeiten im Satz (so dass Sie das Subjekt, Objekt usw. extrahieren können). Der letztere Bestandteil ist etwas, das Python-Bibliotheken einfach noch nicht können (siehe Does NLTK have a tool for dependency parsing?) und wahrscheinlich das wichtigste Feature in Bezug auf die Fähigkeit Ihrer Software, mit Semantik zu arbeiten.
Wenn Sie an Java- und Python-Tools interessiert sind, ist Jython wahrscheinlich am unterhaltsamsten für Sie zu verwenden. Ich war in derselben Situation, also habe ich diesen Beitrag darüber geschrieben, wie man Jython verwendet, um den Beispielcode im Stanford Parser auszuführen - ich würde mir das mal ansehen und sehen, was Sie denken: http://blog.gnucom.cc/2010/using-the-stanford-parser-with-jython/
Bearbeitung: Nachdem ich einen Ihrer Kommentare gelesen habe, habe ich erfahren, dass Sie 29 Millionen Sätze parsen müssen. Ich denke, Sie könnten sehr davon profitieren, indem Sie reines Java verwenden, um zwei wirklich leistungsstarke Technologien zu kombinieren: Stanford Parser + Hadoop. Beide sind rein in Java geschrieben und haben eine äußerst umfangreiche API, mit der Sie große Datenmengen auf einem Cluster von Maschinen in einem Bruchteil der Zeit parsen können. Wenn Sie keine Maschinen haben, können Sie den Amazon-EC2-Cluster verwenden. Wenn Sie ein Beispiel zur Verwendung von Stanford Parser + Hadoop benötigen, hinterlassen Sie mir einen Kommentar, und ich werde den Beitrag mit einem URL zu meinem Beispiel aktualisieren.