2012-11-20 32 views
11

Làm cách nào để có được cây phụ thuộc như Hình bên dưới. Tôi có thể nhận được mối quan hệ phụ thuộc như văn bản thuần túy, và cũng là đồ thị phụ thuộc với sự trợ giúp của công cụ dependencysee. Nhưng làm thế nào về cây phụ thuộc có các từ như các nút và phụ thuộc như các cạnh. Cảm ơn rất nhiều!cách lấy cây phụ thuộc với trình phân tích cú pháp NLP của Stanford

Standard Stanford dependencies (collapsed and propagated)

Trả lời

8

Những đồ thị được sản xuất sử dụng GraphViz, một gói đồ thị vẽ mã nguồn mở, có nguồn gốc từ AT & T nghiên cứu. Bạn có thể tìm phương thức toDotFormat() trong edu.stanford.nlp.trees.semgraph.SemanticGraph sẽ chuyển đổi SemanticGraph thành định dạng ngôn ngữ nhập dot có thể được hiển thị bằng dot/GraphViz. Hiện tại, không có công cụ dòng lệnh nào cung cấp chức năng này, nhưng nó khá đơn giản khi sử dụng phương thức đó.

2

Tôi đang xử lý nội dung tương tự tại thời điểm này. Đây không phải là một giải pháp lý tưởng nhưng nó có thể hữu ích. như đã đề cập trong câu trả lời ở trên, sử dụng toDotFormat() để có được các cây phân tích cú pháp bằng ngôn ngữ dấu chấm. sau đó sử dụng một trong nhiều công cụ (tôi đang sử dụng python-graph) để đọc dữ liệu này và hiển thị nó dưới dạng hình ảnh. có một ví dụ về liên kết này http://code.google.com/p/python-graph/wiki/Example

1

Tôi cũng rất cần nó; bây giờ thật tuyệt khi thấy rằng chúng tôi cũng có một công cụ trực tuyến. Sử dụng điều này: http://graphs.grevian.org/graph (như đã đề cập ở đây: http://graphs.grevian.org/)

Các bước thực hiện:

  1. Phân tích các câu:

    sent = 'What is the step by step guide to invest in share market in india?' 
    p = dep_parser.raw_parse(sent) 
    for e in p: 
        p = e 
        break 
    
  2. In các .to_dot() định dạng như:

    print(p.to_dot()) 
    
  3. Sao chép dán xuất ra http://graphs.grevian.org/graph và nhấn nút Tạo.

Bạn sẽ thấy biểu đồ mong muốn.

+0

Cảm ơn Christopher. Thực sự tốt đẹp của bạn. – user1953366

1

Đây là cách bạn sẽ làm chính xác điều đó (trong python)

Cài đặt tất cả phụ thuộc cần thiết (OS X):

# assuming you have java installed and available in PATH 
# and homebrew installed 

brew install stanford-parser 
brew install graphviz 
pip install nltk 
pip install graphviz 

mã:

import os 
from nltk.parse.stanford import StanfordDependencyParser 
from graphviz import Source 

# make sure nltk can find stanford-parser 
# please check your stanford-parser version from brew output (in my case 3.6.0) 
os.environ['CLASSPATH'] = r'/usr/local/Cellar/stanford-parser/3.6.0/libexec' 

sentence = 'The brown fox is quick and he is jumping over the lazy dog' 

sdp = StanfordDependencyParser() 
result = list(sdp.raw_parse(sentence)) 

dep_tree_dot_repr = [parse for parse in result][0].to_dot() 
source = Source(dep_tree_dot_repr, filename="dep_tree", format="png") 
source.view() 

kết quả là:

enter image description here

tôi đã sử dụng điều này khi đọc Text Analytics With Python: CH3, đọc tốt, xin vui lòng tham khảo nếu bạn cần thêm thông tin về phân tích cú pháp phụ thuộc dựa trên.

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