Nltk: Bagaimana saya bisa menyebariskan grafik nltk ke notebook jupyter?

Dibuat pada 3 Jul 2017  ·  7Komentar  ·  Sumber: nltk/nltk

Saya telah menanyakan pertanyaan ini di stackoverflow tanpa hasil dan memutuskan untuk menduplikasinya di sini.

Menurut sumber nltk itu menggambar grafik dengan tkinter (GUI) tetapi saya perlu menyejajarkan grafik ini menjadi jupyter notebook . Dan saya mencoba melakukannya di dalam docker resmi dari anaconda3 dengan kata lain saya tidak memerlukan GUI popup di sini tetapi hanya gambar di dalam notebook, yang harus dirender di sisi server oleh nltk lib.

Bagaimana saya bisa mengatasi ini dengan nltk? Mungkin ada libs pihak ketiga yang bisa membantu di sana?

Sumber percobaan saya ada di sini - sel ke-18 terakhir.

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:
dalam waktu yang sama matplotlib inline dengan sendirinya bekerja seperti pesona. Bisakah saya menggunakan matplotlib untuk rendering grafik?

Terima kasih!

bug corpus enhancement nice idea

Komentar yang paling membantu

Berpindah dari tkinter adalah ide yang bagus secara umum, tetapi sudah ada dukungan untuk merender pohon sebagai PNG inline di buku catatan:

`` ''
import nltk
dari tampilan impor IPython.display

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

Semua 7 komentar

ok mungkin menyiasatinya bisa dengan cara:

1 memasang Xvfb ,
2 membuat tangkapan layar dari pohon dan dari
3 mengubah ps ke png
3 sejajar tangkapan layar yang dikonversi kembali ke jupyter

tetapi bagi saya ini lebih terlihat seperti retasan kotor. Harus ada cara yang lebih kuat untuk merender pohon.

Saya pikir itu ide yang baik untuk beralih dari tkinter untuk plot dan beralih ke perpustakaan tidak pernah merencanakan grafis, misalnya matplotlib / seaborn .

Berpindah dari tkinter adalah ide yang bagus secara umum, tetapi sudah ada dukungan untuk merender pohon sebagai PNG inline di buku catatan:

`` ''
import nltk
dari tampilan impor IPython.display

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

Ini tidak berfungsi untuk saya di server notebook Jupyter jarak jauh. Pohon _repr_png_() memanggil CanvasFrame() , yang ingin membuat jendela tkinter (dan tidak ada tampilan di server jarak jauh). Tidak terlalu yakin apa solusi yang tepat.

image

nltk = 3.2.4
ipython == 6.2.1
jupyter-core == 4.4.0

Tangkapan yang bagus!

Orang lain baru saja membuka terbitan baru (# 1887) tentang hal yang sama. Tidak yakin dengan prosedurnya, tetapi bisakah kita menggabungkannya?

Hanya untuk menambah solusi rmalouf yang bekerja untuk saya setelah beberapa penyesuaian:

Mac
Jupyter
Python 2.7

Anda perlu menginstal ghostscript agar ini berfungsi: https://wiki.scribus.net/canvas/Installation_and_Configuration_of_Ghostscript
buat instal ghostscript

Jika ini gagal karena xcrun: error: jalur pengembang aktif tidak valid

Kemudian lakukan hal berikut terlebih dahulu
lihat http://mds.is/xcrun-error/
xcode-pilih - instal

Saya baru-baru ini mengumpulkan python murni => paket gambar pohon SVG yang dapat digunakan sebagai pengganti drop-in untuk repr berbasis png Tree di Jupyter. Ini mungkin tidak sesuai untuk semua orang yang menggunakan NLTK, karena membutuhkan python 3 + ini masih cukup awal dalam siklus rilisnya (dan sebagian ditujukan untuk melakukan banyak hal lain yang mungkin kurang relevan untuk audiens ini). Tapi, ini memecahkan masalah yang diangkat di utas ini (dan https://github.com/nltk/nltk/issues/1887), yang juga mengganggu saya:

https://github.com/rawlins/svgling

(nb jika Anda ingin sepenuhnya menghindari masalah terkait tkinter di Jupyter, Anda mungkin juga perlu menghapus _repr_png_() dari Tree . Ini karena Jupyter mencoba semua fungsi _repr_*_ bahkan meskipun itu hanya menampilkan satu dalam keadaan biasa, dan menyimpan output dari semuanya di file notebook.)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

stevenbird picture stevenbird  ·  3Komentar

DavidNemeskey picture DavidNemeskey  ·  4Komentar

jeryini picture jeryini  ·  5Komentar

mwess picture mwess  ·  5Komentar

alvations picture alvations  ·  4Komentar