Python nltk和下载的Chaquopy问题

Python nltk和下载的Chaquopy问题,python,android-studio,kotlin,nltk,chaquopy,Python,Android Studio,Kotlin,Nltk,Chaquopy,据我所知,我不确定这个问题是否解决了 这是nltk上下文中的一个问题。 包括其中一个nltk.download行后: nltk.download('popular') 或 nltk.download('punkt') 或 nltk.download('all')) 我得到了这个堆栈跟踪: 2020-08-26 13:33:45.74219765-19765/com.pro.useyournotes E/ExceptionTag:com.chaquo.python.PyException:Bad

据我所知,我不确定这个问题是否解决了

这是nltk上下文中的一个问题。 包括其中一个nltk.download行后:

nltk.download('popular')
或
nltk.download('punkt')
或
nltk.download('all'))
我得到了这个堆栈跟踪:

2020-08-26 13:33:45.74219765-19765/com.pro.useyournotes E/ExceptionTag:com.chaquo.python.PyException:BadZipFile:File不是zip文件
com.chaquo.python.PyException:BadZipFile:文件不是zip文件
at.zipfile.\u RealGetContents(zipfile.py:1335)
at.zipfile.\uuuu init\uuuu(zipfile.py:1268)
at.nltk.data.\uuuu init\uuuuu(data.py:936)
at.nltk.compat.\u装饰师(compat.py:41)
at.nltk.data.\uuuu init\uuuu(data.py:396)
at.nltk.compat.\u装饰师(compat.py:41)
at.nltk.data.find(data.py:544)
at.nltk.data.find(data.py:557)
at.nltk.tag.perceptron.\uuuu init\uuuu(perceptron.py:168)
at.nltk.tag.\u get\u tagger(\uuu init\uuuu.py:106)
at.nltk.tag.pos_tag_sents(uuu init_uuu.py:178)
at.uyn_pre_processing.pre_processing(uyn_pre_processing.py:88)
at.uyn_analysis_workflow.analysis_新数据(uyn_analysis_workflow.py:62)
at.uyn_main.main(uyn_main.py:266)
at.chaquopy_java.call(chaquopy_java.pyx:285)
在.chaquopy_java.java_com_chaquo_python_PyObject_callAttrThrows(chaquopy_java.pyx:257)
位于com.chaquo.python.PyObject.callAttrThrows(本机方法)
位于com.chaquo.python.PyObject.callAttr(PyObject.java:209)
在com.pro.useyournotes.MainActivity.getPythonHello上(MainActivity.kt:70)
在com.pro.useyournotes.MainActivity.onCreate上(MainActivity.kt:59)
位于android.app.Activity.performCreate(Activity.java:7136)
位于android.app.Activity.performCreate(Activity.java:7127)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:193)
位于android.app.ActivityThread.main(ActivityThread.java:6669)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
发生此错误的代码是:

taged_words=nltk.pos_tag_sents(标记化的句子)
at.uyn_pre_processing.pre_processing(uyn_pre_processing.py:88)

我也不知道nltk文件放在哪里。早些时候,当我刚刚在python端编程时,我只使用import-nltk命令来记忆。希望有些人已经找到了使用nltk的解决方案。

我能够在模拟器上重现类似的东西。在我的例子中,根本原因是下载失败,出现解密失败或坏记录MAC错误,留下不完整的ZIP文件

这似乎是模拟器的一个低级问题,它不是Python特有的。如果您可以确认您有相同的问题(通过在
nltk.download
输出中看到解密失败或不良记录),请在Android问题跟踪器上添加星号,以帮助鼓励他们修复

您可以通过循环调用
nltk.download
来解决这个问题,直到返回true。为了节省时间,您可能只需要下载所需的数据文件。您只需调用相应的函数并查看错误消息,即可了解这些是什么,例如:

>>nltk.pos\u tag\u sents([[“你好”,“世界”]]))
...
LookupError:
**********************************************************************
未找到资源[93maveraged_perceptron_tagger[0m。
请使用NLTK下载程序获取资源:
[31m>>>导入nltk
>>>nltk.download('averaged\u perceptron\u tagger')
然后,您可以将其添加到代码中:

while not nltk.download('averaged_perceptron_tagger'):
    print("Retrying download")

经过几次迭代后,这项操作成功了,然后我能够成功地调用
nltk.pos\u tag\u sents

将此添加到python脚本中:

    while not nltk.download('punkt'):
        return ("Retrying download punkt")
另外,在AndroidManifest中,不要忘记添加以下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


您是否可以编辑您的问题,将nltk.download调用生成的输出包括在内?还有,哪些设备或模拟器出现问题?@mhsmith Emulator-5554,Android Studio 4.0.0上,API 28(Android 9.0)。非常感谢。我只是将不同的下载包名称放在一个列表中。要在for循环中运行while循环,以下载所需的包。也许您也有在java.exe中使用stanfordtagger的经验?这是一个问题:()