Я начал играть с Syntaxnet два дня назад, и мне интересно, как использовать/экспортировать вывод (дерево ascii или conll ) в формате, который легко анализировать (например: Json, XML, график Python ).
Спасибо за вашу помощь !
Я начал играть с Syntaxnet два дня назад, и мне интересно, как использовать/экспортировать вывод (дерево ascii или conll ) в формате, который легко анализировать (например: Json, XML, график Python ).
Спасибо за вашу помощь !
Прежде чем перейти к дереву ascii (я думаю, вы следуете demo.sh), ввод проходит через тегирование и синтаксический анализ. Удалите последний шаг в конвейере команд.
Ваш измененный файл demo.sh будет выглядеть так:
PARSER_EVAL=bazel-bin/syntaxnet/parser_eval
MODEL_DIR=syntaxnet/models/parsey_mcparseface
[[ "$1" == "--conll" ]] && INPUT_FORMAT=stdin-conll || INPUT_FORMAT=stdin
$PARSER_EVAL \
--input=$INPUT_FORMAT \
--output=stdout-conll \
--hidden_layer_sizes=64 \
--arg_prefix=brain_tagger \
--graph_builder=structured \
--task_context=$MODEL_DIR/context.pbtxt \
--model_path=$MODEL_DIR/tagger-params \
--slim_model \
--batch_size=1024 \
--alsologtostderr \
| \
$PARSER_EVAL \
--input=stdin-conll \
--output=stdout-conll \
--hidden_layer_sizes=512,512 \
--arg_prefix=brain_parser \
--graph_builder=structured \
--task_context=$MODEL_DIR/context.pbtxt \
--model_path=$MODEL_DIR/parser-params \
--slim_model \
--batch_size=1024 \
--alsologtostderr \
Затем вы можете запустить: -
$ echo 'Bob brought the pizza to Alice.' | syntaxnet/demo.sh 1>sample.txt 2>dev/null
Ваш результат будет сохранен в файле sample.txt и выглядит следующим образом:
1 Bob _ NOUN NNP _ 2 nsubj _ _
2 brought _ VERB VBD _ 0 ROOT _ _
3 the _ DET DT _ 4 det _ _
4 pizza _ NOUN NN _ 2 dobj _ _
5 to _ ADP IN _ 2 prep _ _
6 Alice _ NOUN NNP _ 5 pobj _ _
7 . _ . . _ 2 punct _ _
Отсюда вы можете легко получить информацию о заголовке каждого слова, частях речи и типе узла, разделив данные с помощью \n
Дерево ascii само по себе построено с использованием выше.
Я пришел сюда в поисках легенды для выходных частей речи. Им поделились в удаленном ответе, который другие пользователи могут не увидеть.
Аббревиатуры частей речи, похоже, совпадают с тегами Penn Parts of Speech для моих предложений до сих пор. Цитирование этой таблицы здесь на случай, если страница выйдет из строя или изменится:
- CC Координационное соединение
- CD Кардинальный номер
- Определитель DT
- EX Экзистенциальный там
- ФВ Иностранное слово
- IN Предлог или подчинительный союз
- JJ Прилагательное
- JJR Прилагательное, сравнительное
- JJS Прилагательное в превосходной степени
- LS Маркер элемента списка
- MD Модальный
- NN Существительное в единственном числе или масса
- NNS Существительное во множественном числе
- NNP Имя собственное, единственное число
- NNPS Имя собственное во множественном числе
- Предопределитель PDT
- POS Притяжательная концовка
- PRP Личное местоимение
- PRP$ Притяжательное местоимение
- РБ Наречие
- RBR Наречие, сравнительное
- RBS Наречие в превосходной степени
- Частица RP
- Символ СИМ
- TO to
- UH Междометие
- VB Глагол, основная форма
- VBD Глагол, прошедшее время
- VBG Глагол, герундий или причастие настоящего времени
- VBN Глагол, причастие прошедшего времени
- VBP Глагол, не 3-е лицо единственного числа настоящего времени
- VBZ Глагол, 3-е лицо, единственное число, настоящее время
- WDT Wh-определитель
- WP Wh-местоимение
- WP$ Притяжательное wh-местоимение
- WRB Wh-наречие
Я написал сообщение в блоге, объясняющее, как получить вывод SyntaxNet для любого заданного языка в Python, в частности, в NLTK, и использовать его вывод с классами Dependency Graph и Tree.
Вы можете проверить это здесь: http://www.davidsbatista.net/blog/2017/03/25/syntaxnet/