Być może spodoba Ci się zestaw narzędzi FACTORIE (http://github.com/factorie/factorie). Jest to ogólna biblioteka do uczenia maszynowego i modeli graficznych, która obejmuje obszerny zestaw komponentów przetwarzania języka naturalnego (tokenizacja, normalizacja tokena, analiza morfologiczna, segmentacja zdań, oznaczanie części mowy, rozpoznawanie nazwanej encji, analiza zależności, wzmianka znalezienie, coreference).
Ponadto jest napisany w całości w Scala i jest wydany na licencji Apache.
Dokumentacja jest obecnie skąpa, ale będzie się poprawiać w nadchodzących miesiącach.
Na przykład, gdy instalacja Maven oparte jest gotowy można wpisać w wierszu poleceń:
bin/fac nlp --pos1 --parser1 --ner1
uruchomienie wielowątkowy serwer NLP Gniazdo słuchania. Następnie zapytania go przez orurowanie zwykłego tekstu numeru gniazda:
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
wyjście jest następnie
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
oczywiście jest programowym API całej tej funkcji, jak również.
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))
wyjście wola:
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
. .
Istnieją wiązania scala, które czynią go jeszcze łatwiejszym! wykonanie instalacji zajmuje trochę czasu, ale wtedy cała ta sprawa zostaje skondensowana do pojedynczej linii. Biblioteka jest [tutaj] (https://github.com/gangeli/CoreNLP-Scala) –