Python繪製樹狀結構小套件

13 February 2020
cs tree python

Me
├── Classification
│   ├── TextCNN
│   ├── Bayes Classifier
│   ├── SVM
│   └── BERT classifier
├── NER
│   ├── Bi-LSTM
│   ├── Bi-LSTM + CRF
│   └── BERT + Bi-LSTM + CRF
├── Coherence Resolution
│   └── Pointer Generator Network
├── Sentence Similarity
│   ├── Siamese Netowrk
│   ├── BERT + Siamese Network
│   └── Average Word Vector
├── Information Restoration
│   └── Pick and Combine Model(BERT + PGN)
└── Comprehension
    └── BERT

Bash有很好用的tree指令可以呈現像這樣的樹狀文件結構,不過,如果是其他情況的樹狀結構,也想用類似的方法呈現,該怎麼辦?於是我用Python寫了一個小套件treeviz可以做這件事情

上面的例子是一個簡單的例子,第一層表示我曾接觸過的NLP任務,第二層表示該任務常用的一些方法,讓我們用程式碼來呈現看看這樣的樹狀結構

from treeviz.treeviz import Node

n1 = Node("Classification")

n11 = Node("TextCNN")
n12 = Node("Bayes Classifier")
n13 = Node("SVM")
n14 = Node("BERT classifier")

n1.add_child(n11)
n1.add_child(n12)
n1.add_child(n13)
n1.add_child(n14)

n1.visualize()

可以對讓任一個點當作根節點來畫樹,也可以設定行距、最大字數限制等,以下是將行距設成一行的效果

Me
├── Classification
│   │
│   ├── TextCNN
│   │
│   ├── Bayes Classifier
│   │
│   ├── SVM
│   │
│   └── BERT classifier
│
├── NER
│   │
│   ├── Bi-LSTM
│   │
│   ├── Bi-LSTM + CRF
│   │
│   └── BERT + Bi-LSTM + CRF
│
├── Coherence Resolution
│   │
│   └── Pointer Generator Network
│
├── Sentence Similarity
│   │
│   ├── Siamese Netowrk
│   │
│   ├── BERT + Siamese Network
│   │
│   └── Average Word Vector
│
├── Information Restoration
│   │
│   └── Pick and Combine Model(BERT + PGN)
│
└── Comprehension
    │
    └── BERT

Github


tsupei/treeviz