Как использовать вывод синтаксической сети

Я начал играть с Syntaxnet два дня назад, и мне интересно, как использовать/экспортировать вывод (дерево ascii или conll ) в формате, который легко анализировать (например: Json, XML, график Python ).

Спасибо за вашу помощь !


person Mahdi DIF    schedule 17.06.2016    source источник


Ответы (3)


Прежде чем перейти к дереву 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 само по себе построено с использованием выше.

person Manjush    schedule 24.06.2016
comment
Спасибо за Ваш ответ. Чтобы проанализировать выходной файл, я использовал программу чтения файлов CONLL, доступную в библиотеке Python NLTK. - person Mahdi DIF; 27.06.2016
comment
Привет, кто-нибудь знает, где я могу получить объяснение того, что означает каждая строка. Я предполагаю, что должны быть некоторые основные категории. Также странно, что в последних 2-х рядах ничего нет. - person Kahless; 09.08.2016
comment
@Kahless вы можете найти объяснение формата CoNLL здесь: ilk.uvt.nl/conll/#dataformat - person Chuck Wooters; 17.09.2016

Я пришел сюда в поисках легенды для выходных частей речи. Им поделились в удаленном ответе, который другие пользователи могут не увидеть.

Аббревиатуры частей речи, похоже, совпадают с тегами Penn Parts of Speech для моих предложений до сих пор. Цитирование этой таблицы здесь на случай, если страница выйдет из строя или изменится:

  1. CC Координационное соединение
  2. CD Кардинальный номер
  3. Определитель DT
  4. EX Экзистенциальный там
  5. ФВ Иностранное слово
  6. IN Предлог или подчинительный союз
  7. JJ Прилагательное
  8. JJR Прилагательное, сравнительное
  9. JJS Прилагательное в превосходной степени
  10. LS Маркер элемента списка
  11. MD Модальный
  12. NN Существительное в единственном числе или масса
  13. NNS Существительное во множественном числе
  14. NNP Имя собственное, единственное число
  15. NNPS Имя собственное во множественном числе
  16. Предопределитель PDT
  17. POS Притяжательная концовка
  18. PRP Личное местоимение
  19. PRP$ Притяжательное местоимение
  20. РБ Наречие
  21. RBR Наречие, сравнительное
  22. RBS Наречие в превосходной степени
  23. Частица RP
  24. Символ СИМ
  25. TO to
  26. UH Междометие
  27. VB Глагол, основная форма
  28. VBD Глагол, прошедшее время
  29. VBG Глагол, герундий или причастие настоящего времени
  30. VBN Глагол, причастие прошедшего времени
  31. VBP Глагол, не 3-е лицо единственного числа настоящего времени
  32. VBZ Глагол, 3-е лицо, единственное число, настоящее время
  33. WDT Wh-определитель
  34. WP Wh-местоимение
  35. WP$ Притяжательное wh-местоимение
  36. WRB Wh-наречие
person Eric Hu    schedule 02.01.2017

Я написал сообщение в блоге, объясняющее, как получить вывод SyntaxNet для любого заданного языка в Python, в частности, в NLTK, и использовать его вывод с классами Dependency Graph и Tree.

Вы можете проверить это здесь: http://www.davidsbatista.net/blog/2017/03/25/syntaxnet/

person David Batista    schedule 01.04.2017