Si potrebbe prendere in considerazione il toolkit FACTORIE (http://github.com/factorie/factorie). Si tratta di una libreria generale per l'apprendimento automatico e modelli grafici che comprende una vasta suite di componenti di elaborazione del linguaggio naturale (tokenizzazione, normalizzazione dei token, analisi morfologica, segmentazione della frase, tag di parte del discorso, riconoscimento di entità con nome, analisi di dipendenza, menzione ricerca, coreferenza).
Inoltre è scritto interamente in Scala ed è rilasciato con la licenza Apache.
La documentazione è attualmente scarsa, ma migliorerà nei prossimi mesi.
Ad esempio, una volta l'installazione Maven-based è terminato è possibile digitare sulla riga di comando:
bin/fac nlp --pos1 --parser1 --ner1
per lanciare un server NLP multi-threaded socket di ascolto. Poi interrogare convogliando testo normale al suo numero di socket:
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
L'uscita è quindi
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
Naturalmente v'è un'API di programmazione di tutte queste funzionalità pure.
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))
stamperà:
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
. .
Ci sono collegamenti scala che rendono ancora più semplice! ci vuole un po 'di lavoro da installare, ma poi tutta questa cosa si condensa in una singola riga. La biblioteca è [qui] (https://github.com/gangeli/CoreNLP-Scala) –