2016-06-17 16 views
12

Tôi bắt đầu chơi với Syntaxnet hai ngày trước và tôi tự hỏi cách sử dụng/xuất đầu ra (cây ascii hoặc conll) ở định dạng dễ phân tích cú pháp (ví dụ: Json, XML , đồ thị python).Cách sử dụng cú pháp đầu ra

Cảm ơn sự giúp đỡ của bạn!

Trả lời

9

Trước khi đến cây ascii (tôi nghĩ bạn đang theo dõi demo.sh), đầu vào đi qua gắn thẻ và phân tích cú pháp. Loại bỏ bước cuối cùng trong đường dẫn lệnh.

tập tin demo.sh sửa đổi của bạn sẽ trông như thế này: -

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 \ 

Sau đó bạn có thể chạy: -

$ echo 'Bob brought the pizza to Alice.' | syntaxnet/demo.sh 1>sample.txt 2>dev/null 

Bạn dẫn sẽ được lưu trữ trong sample.txt và nó trông như thế này : -

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 _ _ 

Từ đây, bạn có thể dễ dàng lấy thông tin về phần đầu của mỗi từ, phần lời nói và loại bằng cách chia tách dữ liệu với \ n

Cây ascii của chính nó được tạo bằng cách sử dụng ở trên.

+0

Cảm ơn câu trả lời của bạn. Để phân tích cú pháp tệp đầu ra, tôi đã sử dụng trình đọc tệp CONLL có sẵn trong thư viện Python NLTK. –

+0

Hey có ai biết nơi tôi có thể nhận được một lời giải thích về những gì mỗi hàng đứng cho. Tôi đoán rằng phải có một số "danh mục" chính.Nó cũng lạ mà không bao giờ có vẻ là bất cứ điều gì trong 2 hàng cuối cùng. – Kahless

+0

@ Không có gì bạn có thể tìm thấy giải thích về định dạng CoNLL tại đây: http://ilk.uvt.nl/conll/#dataformat –

4

Tôi đến đây để tìm kiếm một huyền thoại cho các phần đầu ra của lời nói. Nó được chia sẻ trong một câu trả lời đã bị xóa - mà những người dùng khác có thể không nhìn thấy được.

Các phần của từ viết tắt tiếng nói dường như khớp với số Penn Parts of Speech Tags cho câu của tôi cho đến thời điểm này.Trích dẫn bảng mà ở đây trong trường hợp trang đi xuống hoặc thay đổi:

  1. CC Phối kết hợp
  2. CD ĐHY số
  3. DT determiner
  4. EX Hiện sinh có
  5. FW từ Ngoại
  6. IN Đề xuất hoặc kết hợp cấp dưới
  7. Tính từ JJ
  8. JJR Adjective, so sánh
  9. JJS Adjective, bậc
  10. LS List item marker
  11. MD Modal
  12. NN Noun, số ít hoặc khối lượng
  13. NNS Noun, số nhiều
  14. NNP Proper noun, ít
  15. NNPS Danh từ thích hợp, số nhiều
  16. PDT Predeterminer
  17. P OS từ sở hữu kết thúc
  18. pronoun cá nhân PRP
  19. PRP $ từ sở hữu pronoun
  20. RB trạng từ
  21. RBR Adverb, so sánh
  22. RBS Adverb, bậc
  23. RP Hạt
  24. SYM Symbol
  25. ĐẾN đến
  26. UH Interjection
  27. VB Verb, hình thức cơ bản
  28. VBD Verb, quá khứ
  29. VBG Verb, gerund hoặc hiện tại phân
  30. VBN Verb, quá khứ phân
  31. VBP Verb, người phi thứ 3 số ít mặt
  32. VBZ Verb, người thứ 3 có mặt ít
  33. WDT Wh-determiner
  34. WP Wh-pronoun
  35. WP $ từ sở hữu wh-pronoun
  36. WRB Wh-trạng từ
5

tôi đã viết một bài đăng blog giải thích làm thế nào để có được đầu ra của SyntaxNet cho bất kỳ ngôn ngữ nào đó, vào Python, đặc biệt vào NLTK, và sử dụng nó là đầu ra với các lớp Graph phụ thuộc và Tree.

Bạn có thể kiểm tra tại đây: http://www.davidsbatista.net/blog/2017/03/25/syntaxnet/

Các vấn đề liên quan