Nltk: كيف يمكنني تضمين رسم بياني nltk في دفتر jupyter؟

تم إنشاؤها على ٣ يوليو ٢٠١٧  ·  7تعليقات  ·  مصدر: nltk/nltk

لقد طرحت هذا السؤال بالفعل على stackoverflow دون أي حظ وقررت تكراره هنا.

وفقًا لمصادر nltk فإنه يرسم الرسم البياني بمقدار tkinter (GUI) لكني أحتاج إلى تضمين هذا الرسم البياني إلى jupyter notebook . وأنا أحاول القيام بذلك داخل عامل الإرساء الرسمي من anaconda3 بمعنى آخر ، لست بحاجة إلى أي واجهة مستخدم رسومية منبثقة هنا ولكن فقط صورة داخل دفتر الملاحظات ، يجب أن يتم عرضها على جانب الخادم بواسطة nltk lib.

كيف يمكنني التغلب على هذا من خلال nltk؟ ربما هناك libs الطرف الثالث التي يمكن أن تساعد هناك؟

مصادر محاولتي هنا - الخلية الثامنة عشر الأخيرة.

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()

ملاحظة:
في نفس الوقت يعمل matplotlib المضمّن في حد ذاته مثل السحر. هل يمكنني استخدام matplotlib لعرض الرسم البياني؟

شكر!

bug corpus enhancement nice idea

التعليق الأكثر فائدة

يعد الابتعاد عن tkinter فكرة جيدة بشكل عام ، ولكن هناك بالفعل دعمًا لتصيير الأشجار كملفات PNG مضمنة في أجهزة الكمبيوتر المحمولة:

""
استيراد nltk
من عرض استيراد IPython.display

المحلل اللغوي = nltk.RegexpParser (r'NP: {<[NJ]. *> +} ')
tree = parser.parse (nltk.corpus.brown.tagged_sents () [0])
عرض (شجرة)
""

ال 7 كومينتر

حسنًا ، يمكن حل المشكلة عن طريق:

1 تثبيت Xvfb ،
2 صنع لقطة للشجرة ومن
3 تحويل ps إلى png
3 تضمين لقطة الشاشة المحولة إلى jupyter

ولكن بالنسبة لي يبدو الأمر أشبه باختراق قذر. يجب أن يكون هناك طريقة أكثر فعالية لتقديم الشجرة.

أعتقد أنه من الجيد الابتعاد عن tkinter لقطع الأرض والانتقال نحو مكتبات الرسم البياني مطلقًا ، على سبيل المثال matplotlib / seaborn .

يعد الابتعاد عن tkinter فكرة جيدة بشكل عام ، ولكن هناك بالفعل دعمًا لتصيير الأشجار كملفات PNG مضمنة في أجهزة الكمبيوتر المحمولة:

""
استيراد nltk
من عرض استيراد IPython.display

المحلل اللغوي = nltk.RegexpParser (r'NP: {<[NJ]. *> +} ')
tree = parser.parse (nltk.corpus.brown.tagged_sents () [0])
عرض (شجرة)
""

هذا لا يعمل بالنسبة لي على خادم دفتر Jupyter بعيد. تستدعي الشجرة _repr_png_() CanvasFrame() ، والتي تريد إنشاء نافذة tkinter (ولا يوجد عرض على الخادم البعيد). لست متأكدًا حقًا من الحل الصحيح.

image

nltk = 3.2.4
ipython == 6.2.1
جوبيتر النواة == 4.4.0

مسكة جيدة!

قام شخص آخر بفتح عدد جديد (# 1887) حول نفس الشيء. لست متأكدًا من الإجراء ، لكن هل يمكننا دمجها؟

فقط للإضافة إلى حل رمالوف الذي يناسبني بعد بعض التعديلات:

ماك
كوكب المشتري
بايثون 2.7

تحتاج إلى تثبيت ghostscript حتى يعمل هذا: https://wiki.scribus.net/canvas/Installation_and_Configuration_of_Ghostscript
الشراب تثبيت ghostscript

إذا فشل ذلك بسبب xcrun: خطأ: مسار المطور النشط غير صالح

ثم قم بما يلي أولاً
انظر http://mds.is/xcrun-error/
تحديد xcode - التثبيت

لقد قمت مؤخرًا بتجميع حزمة رسم شجرة بيثون نقية => SVG يمكن استخدامها كبديل للإسقاط مقابل Tree نسخة مبنية على png في Jupyter. قد لا يكون ذلك مناسبًا لكل من يستخدم NLTK ، لأنه يتطلب Python 3 + فإنه لا يزال مبكرًا جدًا في دورة إصداره (ويهدف جزئيًا إلى القيام بمجموعة من الأشياء الأخرى التي ربما تكون أقل صلة بهذا الجمهور). ولكنه يحل المشكلات التي أثيرت في هذا الموضوع (و https://github.com/nltk/nltk/issues/1887) ، والتي كانت تزعجني أيضًا:

https://github.com/rawlins/svgling

(ملحوظة إذا كنت تريد تجنب المشكلات المتعلقة بـ tkinter بالكامل في Jupyter ، فقد تحتاج أيضًا إلى إزالة _repr_png_() من Tree . هذا لأن Jupyter يحاول جميع الوظائف المتاحة _repr_*_ حتى على الرغم من أنه يعرض واحدًا فقط في ظروف نموذجية ، ويحفظ إخراج كل منهم في ملف دفتر الملاحظات.)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

Chris00 picture Chris00  ·  3تعليقات

alvations picture alvations  ·  4تعليقات

alvations picture alvations  ·  4تعليقات

zdog234 picture zdog234  ·  3تعليقات

jeryini picture jeryini  ·  5تعليقات