Вы можете рассмотреть набор инструментов FACTORIE (http://github.com/factorie/factorie). Это общая библиотека для машинного обучения и графических моделей, которая включает в себя обширный набор компонентов обработки естественного языка (токенизация, нормализация токенов, морфологический анализ, сегментация предложений, тегирование частей речи, распознавание именованных сущностей, анализ зависимостей, упоминание). находка, кореферентность).
Кроме того, он полностью написан на Scala и выпущен под лицензией Apache.
В настоящее время документация скудна, но в ближайшие месяцы она будет улучшена.
Например, после завершения установки на основе Maven вы можете ввести в командной строке:
bin/fac nlp --pos1 --parser1 --ner1
для запуска многопоточного NLP-сервера, прослушивающего сокеты. Затем запросите его, передав простой текст в его номер сокета:
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
Результат тогда
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
Конечно, для всех этих функций также существует программный API.
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))
выведет:
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
. .
person
mccallum
schedule
24.08.2013