Nltk: Comment pourrais-je intégrer le graphique nltk au notebook Jupyter?

Créé le 3 juil. 2017  ·  7Commentaires  ·  Source: nltk/nltk

J'ai déjà posé cette question sur stackoverflow sans aucune chance et décide de la dupliquer ici.

Selon les sources de nltk il dessine un graphique de tkinter (GUI) mais j'ai besoin d'insérer ce graphique dans jupyter notebook . Et j'essaie de le faire à l'intérieur du docker officiel de anaconda3, en d'autres termes, je n'ai besoin d'aucune interface graphique contextuelle ici, mais juste d'une image à l'intérieur du notebook, qui devrait être rendue côté serveur par nltk lib.

Comment pourrais-je surmonter cela avec nltk? Peut-être existe-t-il des bibliothèques tierces qui pourraient vous aider?

Les sources de mon essai sont ici - la dernière 18e cellule.

chunkGram = r"""Chunk: {<RB.?>*<VB.?>*<NNP>+<NN>?}"""
chunkParser = nltk.RegexpParser(chunkGram)

for i in tokenized_text[:5]:
    words = nltk.word_tokenize(i)
    tagged = nltk.pos_tag(words)
    chunked = chunkParser.parse(tagged)
    chunked.draw()

PS:
dans le même temps, matplotlib inline fonctionne à lui seul comme un charme. Puis-je utiliser matplotlib pour le rendu graphique?

Merci!

bug corpus enhancement nice idea

Commentaire le plus utile

S'éloigner de tkinter est une bonne idée en général, mais il existe déjà un support pour le rendu des arbres en tant que PNG en ligne dans les blocs-notes:

`` ``
importer nltk
à partir de l'affichage d'importation IPython.display

parser = nltk.RegexpParser (r'NP: {<[NJ]. *> +} ')
tree = parser.parse (nltk.corpus.brown.tagged_sents () [0])
affichage (arborescence)
`` ``

Tous les 7 commentaires

ok le contournement possible pourrait être par:

1 installation Xvfb ,
2 Faire une capture d'écran de l'arbre et que
3 Conversion de PS en PNG
3 captures d'écran converties en ligne en jupyter

mais quant à moi, cela ressemble plus à un sale hack. Il devrait y avoir un moyen plus robuste de rendre l'arbre.

Je pense que c'est une bonne idée de s'éloigner de tkinter pour les tracés et de s'orienter vers des bibliothèques de traçage jamais graphiques, par exemple matplotlib / seaborn .

S'éloigner de tkinter est une bonne idée en général, mais il existe déjà un support pour le rendu des arbres en tant que PNG en ligne dans les blocs-notes:

`` ``
importer nltk
à partir de l'affichage d'importation IPython.display

parser = nltk.RegexpParser (r'NP: {<[NJ]. *> +} ')
tree = parser.parse (nltk.corpus.brown.tagged_sents () [0])
affichage (arborescence)
`` ``

Cela ne fonctionne pas pour moi sur un serveur de notebook Jupyter distant. L'arbre _repr_png_() appelle CanvasFrame() , qui veut créer une fenêtre tkinter (et il n'y a pas d'affichage sur le serveur distant). Je ne sais pas vraiment quelle est la bonne solution de contournement.

image

nltk = 3,2,4
ipython == 6.2.1
jupyter-core == 4.4.0

Bonne prise!

Quelqu'un d'autre vient d'ouvrir un nouveau numéro (# 1887) sur la même chose. Vous n'êtes pas sûr de la procédure, mais pouvons-nous les fusionner?

Juste pour ajouter à la solution rmalouf qui fonctionne pour moi après quelques ajustements:

Mac
Jupyter
Python 2.7

Vous devez avoir installé ghostscript pour que cela fonctionne: https://wiki.scribus.net/canvas/Installation_and_Configuration_of_Ghostscript
brew installer ghostscript

Si cela échoue en raison de xcrun: erreur: chemin du développeur actif non valide

Puis faites d'abord ce qui suit
voir http://mds.is/xcrun-error/
xcode-select - installer

J'ai récemment mis au point un paquet de dessin d'arbre python => SVG qui peut être utilisé comme remplacement instantané pour la reprogrammation png de Tree dans Jupyter. Cela peut ne pas convenir à tout le monde qui utilise NLTK, car il nécessite python 3 +, il est encore assez tôt dans son cycle de publication (et il vise en partie à faire un tas d'autres choses qui sont peut-être moins pertinentes pour ce public). Mais cela résout les problèmes soulevés dans ce fil (et https://github.com/nltk/nltk/issues/1887), qui me tourmentent également:

https://github.com/rawlins/svgling

(nb si vous voulez éviter complètement les problèmes liés à tkinter dans Jupyter, vous devrez peut-être également supprimer _repr_png_() de Tree . C'est parce que Jupyter essaie toutes les fonctions _repr_*_ même bien qu'il n'en affiche qu'un dans des circonstances typiques et enregistre la sortie de tous dans le fichier notebook.)

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

talbaumel picture talbaumel  ·  4Commentaires

chaseireland picture chaseireland  ·  3Commentaires

goodmami picture goodmami  ·  4Commentaires

jeryini picture jeryini  ·  5Commentaires

stevenbird picture stevenbird  ·  3Commentaires