Tôi có một số câu hỏi về các chức năng của cây NLTK. Tôi đang cố gắng trích ra một từ nhất định từ cấu trúc cây như hình bên dưới.Trích xuất giá trị lá cụ thể từ cấu trúc cây nltk bằng Python
test = Tree.parse('(ROOT(SBARQ(WHADVP(WRB How))(SQ(VBP do)(NP (PRP you))(VP(VB ask)(NP(DT a)(JJ total)(NN stranger))(PRT (RP out))(PP (IN on)(NP (DT a)(NN date)))))))')
print "Input tree: ", test
print test.leaves()
(SBARQ
(WHADVP (WRB How))
(SQ
(VBP do)
(NP (PRP you))
(VP
(VB ask)
(NP (DT a) (JJ total) (NN stranger))
(PRT (RP out))
(PP (IN on) (NP (DT a) (NN date)))))))
['How', 'do', 'you', 'ask', 'a', 'total', 'stranger', 'out', 'on', 'a', 'date']
Tôi có thể tìm danh sách tất cả các từ sử dụng hàm leaves(). Có cách nào để lấy một chiếc lá cụ thể không? Ví dụ: Tôi muốn nhận danh từ đầu tiên/cuối cùng chỉ trong cụm từ NP? Câu trả lời sẽ là 'người lạ' cho danh từ đầu tiên và 'ngày' làm danh từ cuối cùng.
Cảm ơn nó hoạt động. Bây giờ tôi chỉ cần lấy vật phẩm đầu tiên trong danh sách. – Cryssie
Sử dụng Python 3.4.1 và NLTK 3.2.1, sử dụng 'x.label()' thay vì 'x.node' để tìm kết quả, nếu không bạn sẽ nhận được' NotImplementedError ("Use label() để truy cập nhãn nút . ")' ngoại lệ. I.e: 't = list (r.subtrees (bộ lọc = lambda x: x.label() == 'NP'))' – InfectedPacket