Vielleicht möchten Sie das FACTORIE Toolkit (http://github.com/factorie/factorie) in Betracht ziehen. Es ist eine allgemeine Bibliothek für maschinelles Lernen und grafische Modelle, die eine umfangreiche Suite natürlicher Verarbeitungskomponenten enthält (Tokenisierung, Token-Normalisierung, morphologische Analyse, Satzsegmentierung, Wort-Teil-Kennzeichnung, Erkennung von benannten Entitäten, Abhängigkeitsanalyse, Erwähnung) Finden, Koreferenz).
Darüber hinaus ist es vollständig in Scala geschrieben, und es ist unter der Apache-Lizenz veröffentlicht.
Die Dokumentation ist derzeit spärlich, wird sich aber in den kommenden Monaten verbessern.
Zum Beispiel, wenn Maven-basierte Installation abgeschlossen ist, können Sie in der Befehlszeile eingeben:
bin/fac nlp --pos1 --parser1 --ner1
einen Buchse Hören Multi-Threaded-NLP-Server zu starten. Abfrage dann von Klartext in seine Steckdose kochend:
echo "Mr. Jones took a job at Google in New York. He and his Australian wife moved from New South Wales on 4/1/12." | nc localhost 3228
Der Ausgang dann
1 1 Mr. NNP 2 nn O
2 2 Jones NNP 3 nsubj U-PER
3 3 took VBD 0 root O
4 4 a DT 5 det O
5 5 job NN 3 dobj O
6 6 at IN 3 prep O
7 7 Google NNP 6 pobj U-ORG
8 8 in IN 7 prep O
9 9 New NNP 10 nn B-LOC
10 10 York NNP 8 pobj L-LOC
11 11 . . 3 punct O
12 1 He PRP 6 nsubj O
13 2 and CC 1 cc O
14 3 his PRP$ 5 poss O
15 4 Australian JJ 5 amod U-MISC
16 5 wife NN 6 nsubj O
17 6 moved VBD 0 root O
18 7 from IN 6 prep O
19 8 New NNP 9 nn B-LOC
20 9 South NNP 10 nn I-LOC
21 10 Wales NNP 7 pobj L-LOC
22 11 on IN 6 prep O
23 12 4/1/12 NNP 11 pobj O
24 13 . . 6 punct O
Natürlich ist es eine programmatische API, um alle diese Funktionalität als auch.
import cc.factorie._
import cc.factorie.app.nlp._
val doc = new Document("Education is the most powerful weapon which you can use to change the world.")
DocumentAnnotatorPipeline(pos.POS1).process(doc)
for (token <- doc.tokens)
println("%-10s %-5s".format(token.string, token.posLabel.categoryValue))
AUSGABE:
Education NN
is VBZ
the DT
most RBS
powerful JJ
weapon NN
which WDT
you PRP
can MD
use VB
to TO
change VB
the DT
world NN
. .
Es gibt Scala-Bindungen, die es noch einfacher machen! Es braucht ein wenig Arbeit, um es zu installieren, aber dann wird das Ganze zu einer einzigen Zeile zusammengefasst. Die Bibliothek ist [hier] (https://github.com/gangeli/CoreNLP-Scala) –