Nltk: خطأ في نظام التشغيل: فشل أمر Java عند استخدام مثال محلل ستانفورد

تم إنشاؤها على ٢٥ ديسمبر ٢٠١٥  ·  18تعليقات  ·  مصدر: nltk/nltk

أهلا،

أحاول تشغيل مثال محلل ستانفورد. على سبيل المثال

from nltk.parse.stanford import * 
dep_parser=StanfordDependencyParser(model_path="edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz")
[parse.tree() for parse in dep_parser.raw_parse("The quick brown fox jumps over the lazy dog.")]

تنفيذ آخر أمر يؤدي إلى ظهور خطأ:

OSError: Java command failed : [u'/usr/bin/java', u'-mx1000m', '-cp', ....

عندما أقوم بإعادة إنتاج نفس الأمر في سطر الأوامر ، يظهر لي الخطأ Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

لذلك ، بعد إضافة slf4j-api.jar إلى classpath _ على سطر الأوامر_ ، يكون التحليل ناجحًا.

كيف يمكن إضافة slf4j-api.jar إلى nltk classpath ، لذا سيكون التحليل ناجحًا؟

شكرا لك!
اجازة سعيدة

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

ما هو 'st' في الأمر 'stanford_dir = st._stanford_jar.rpartition (' / ') [0]'

ال 18 كومينتر

yuvval فقط للتأكد من أنك تستخدم إصدار Stanford Parser 2015-12-09؟ إذا كان الأمر كذلك ، يحدث هذا الخطأ بسبب استخدام StanfordNLP الجديد تبعيات أكثر من ذي قبل. هذا مشابه للرقم 1237

سوف تضطر إلى الانتظار لفترة من الوقت قبل إصلاح # 1237 وتلتحق NLTK بأدوات Standford.

حل الإصلاح السريع هو إما:

  1. استخدم الإصدار السابق 2015-04-20 من http://nlp.stanford.edu/software/stanford-parser-full-2015-04-20.zip وستعمل واجهة برمجة تطبيقات NLTK ، راجع http://stackoverflow.com / FAQs / 13883277 / stanford-parser-and-nltk / 34112695 # 34112695 أو
  2. اختراق مسار فئة محلل ستانفورد:
from nltk.internals import find_jars_within_path
from nltk.parse.stanford import StanfordDependencyParser
dep_parser=StanfordDependencyParser(model_path="edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz")
stanford_dir = st._stanford_jar.rpartition('/')[0]
# or in windows comment the line above and uncomment the one below:
#stanford_dir = st._stanford_jar.rpartition("\\")[0]
stanford_jars = find_jars_within_path(stanford_dir)
st.stanford_jar = ':'.join(stanford_jars)
[parse.tree() for parse in dep_parser.raw_parse("The quick brown fox jumps over the lazy dog.")]

شكرا لك! يعمل مع إصدار 2015-04-20.

هل نجح الاختراق في Classpath أيضًا؟

لم أحاول - لقد قمت للتو بحذف أحدث إصدار وقمت بتنزيل الإصدار 2015-04-20.

أهلا! لقد حاولت متابعة الاختراق الخاص بك ولكن بالنسبة لي لا يوجد برنامج `` StanfordDependencyParser '':

print(nltk.__version__)
from nltk.tag import StanfordDependencyParser

3.1
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-7-67bb74c3494a> in <module>()
----> 1 from nltk.tag import StanfordDependencyParser

ImportError: cannot import name 'StanfordDependencyParser'

أي فكرة عن كيفية حل هذا؟ أود حقًا استخدام أحدث إصدار من ستانفورد.

methodds عفواً عن الخطأ المطبعي ، إنه from nltk.parse.stanford import StanfordDependencyParser . يرجى الاطلاع على https://gist.github.com/alvations/e1df0ba227e542955a8a للحصول على تفسيرات مفصلة.

شكرا لك على الرابط. لسوء الحظ ، لا يمكنني الحصول على متغيرات البيئة للعمل على نظام التشغيل Linux mint الخاص بي.

يبدو bashrc كما يلي:

export JAVA_HOME="/usr/lib/jvm/java-8-oracle/"
export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH="/home/cs/stanford_nlp/stanford-postagger-full-2015-04-20/stanford-postagger.jar:$CLASSPATH"

export CLASSPATH="/home/cs/stanford_nlp/stanford-ner-2015-04-20/stanford-ner.jar:$CLASSPATH"

export STANFORD_MODELS="/home/cs/stanford_nlp/stanford-ner-2015-04-20/classifiers:$STANFORD_MODELS"

export STANFORD_MODELS="/home/cs/stanford_nlp/stanford-postagger-full-2015-04-20/models:$STANFORD_MODELS"

يبدو ترديد المتغيرات صحيحًا:

echo $CLASSPATH
/home/cs/stanford_nlp/stanford-ner-2015-04-20/stanford-ner.jar:/home/cs/stanford_nlp/stanford-postagger-full-2015-04-20/stanford-postagger.jar

echo $STANFORD_MODELS
/home/cs/stanford_nlp/stanford-postagger-full-2015-04-20/models:/home/cs/stanford_nlp/stanford-ner-2015-04-20/classifiers

ومع ذلك (حتى بعد إعادة التشغيل) لا يزال NLTK لا يجد الوسم:

from nltk.tag.stanford import StanfordPOSTagger
st = StanfordPOSTagger('english-bidirectional-distsim.tagger')
st.tag('What is the airspeed of an unladen swallow ?'.split())

NLTK was unable to find stanford-postagger.jar! Set the CLASSPATH
environment variable.

افعل source .bashrc وسيعمل في غضون ذلك ، ألق نظرة على http://apple.stackexchange.com/questions/12993/why-doesnt-bashrc-run-automatically لمعرفة كيفية عمل bashrc.

شكرا لك على نصيحتك ، لكنني قمت بمصدر .bashrc مسبقا ولم تنجح. لقد حاولت مرة أخرى ولسوء الحظ ما زالت لا تعمل.

ما هو توزيع Linux الخاص بك وإصداره؟ هل يمكنك عمل lsb_release -a ؟ أم أنك تعمل مع جهاز Mac؟

شكرا لك على التحقيق. إرجاع ` lsb_release -a

No LSB modules are available.
Distributor ID: LinuxMint
Description:    Linux Mint 17.3 Rosa
Release:    17.3
Codename:   rosa
  • أين نفذت أوامر export ؟ أي دليل؟
  • أين تقوم بتشغيل نصوص بايثون الخاصة بك؟ أي دليل؟

انتقل إلى المكان الذي تريد تشغيل نص Python فيه ، افعل هذا: import os; print os.environ .

ثم انتقل إلى الدليل الرئيسي الخاص بك ، وابدأ بايثون وافعل الشيء نفسه: import os; print os.environ

هل ترى اختلاف مجموعتي متغيرات البيئة؟

أعتقد أنك أردت مني استخدام import os; print(os.environ) ، والذي لم يكشف عن متغيرات البيئة التي قمت بتصديرها في .bashrc . بعد ذلك قمت بنسخ المحتوى الذي قمت بلصقه في .profile (في مجلد منزلي) وهو الآن يعمل بشكل مثالي. ليس لدي أي فكرة لماذا على الرغم من = D.

سعيد لأن .profile يعمل ، أعتقد أنها مشكلة في توزيع نظام التشغيل. لا أوصي بتخزين متغيرات البيئة على أنها ثابتة ، شخصيًا ، أعيد تشغيلها في كل مرة أبدأ فيها نصوص بايثون ، حتى أتمكن من التأكد من عدم وجود تعارض. استمتع مع NLTK API وأدوات ستانفورد!

شكرا لك :)

ما هو 'st' في الأمر 'stanford_dir = st._stanford_jar.rpartition (' / ') [0]'

لدي نفس السؤال مثل hansen7

بالنسبة لعدد قليل من الذين كانوا يبحثون عن شارع ،
st = StanfordNERTagger(os.environ.get('STANFORD_MODELS'))
المرجع: https://gist.github.com/manashmndl/810db10809cbc1209b34c7d25efe95d5#file -stanfordnertagger-py

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

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

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

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

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

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

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