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

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

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

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 само по себе строится с использованием выше.

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

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

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

Части речевых аббревиатур, кажется, совпадают с Пеннскими частями речевых тегов для моих предложений. Цитируя эту таблицу здесь в случае, если страница закрывается или изменяется:

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