2015-08-03 14 views

Odpowiedz

6

podstawie this odpowiedź:

import os 
from IPython.display import Image, display 
from nltk.draw import TreeWidget 
from nltk.draw.util import CanvasFrame 

def jupyter_draw_nltk_tree(tree): 
    cf = CanvasFrame() 
    tc = TreeWidget(cf.canvas(), tree) 
    tc['node_font'] = 'arial 13 bold' 
    tc['leaf_font'] = 'arial 14' 
    tc['node_color'] = '#005990' 
    tc['leaf_color'] = '#3F8F57' 
    tc['line_color'] = '#175252' 
    cf.add_widget(tc, 10, 10) 
    cf.print_to_file('tmp_tree_output.ps') 
    cf.destroy() 
    os.system('convert tmp_tree_output.ps tmp_tree_output.png') 
    display(Image(filename='tmp_tree_output.png')) 
    os.system('rm tmp_tree_output.ps tmp_tree_output.png') 

trochę powolny, ale spełnia swoje zadanie. Jeśli robisz to zdalnie, nie zapomnij, aby uruchomić sesję ssh z -X klucza (jak ssh -X [email protected]), tak aby mogła zainicjować się Tk (no display name and no $DISPLAY environment variable -kind błędu)

UPD: wydaje się, że ostatnie wersje z jupyter i nltk ładnie ze sobą współpracują, więc możesz po prostu zrobić IPython.core.display.display(tree), aby uzyskać ładnie wyglądający rendering drzewa osadzony w danych wyjściowych.

+0

Czy chcesz dodać jakieś konfiguracje/magię? Które wersje programu jupyter, notebook i nltk są uruchomione, aby uzyskać renderowanie drzewa osadzonego? I nie wydaje się uzyskać to, właśnie zaktualizowana == jupyter-client 4.4.0 jupyter-core == 4.2.1 jupyterhub == 0.7.2 notebook == 4.3.1 nadal jestem coraz błędy tk: TclError: brak wyświetlanej nazwy i zmiennej środowiskowej $ DISPLAY –

+0

@GenaKukartsev upewnij się, że zrobiłeś 'ssh -X' –

+0

Czy chcesz nadal robić to dla notebooka? Dla jasności nie mówię o używaniu linii poleceń - ta część jest jasna. To, czego chcę, to grafika NLTK wyświetlana w linii w notesie IPython, podobna do grafiki matplotlib. Może to stanowić problem dla mojej konfiguracji: używam jukeuterhubowego serwera publikacji ipython dla wielu użytkowników. Użytkownicy logują się za pomocą interfejsu internetowego. Biorąc pod uwagę, że jeśli nadal potrzebujemy tk, aby włączyć grafikę osadzoną, nie jestem pewien, jak ją skonfigurować. Jakieś sugestie? Dzięki! –

Powiązane problemy