nltk 和下载的 Chaquopy 问题 [英] Chaquopy problems with nltk and download

查看:28
本文介绍了nltk 和下载的 Chaquopy 问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

根据 Chaquopy 无法下载资源 i不知道问题有没有解决.

According to Chaquopy Not able to download Resource i'm not sure if the problem got solved.

所以这是 nltk 上下文中的问题.在包含 nltk.download 行之一后:

So here is question in the nltk context. After including one of the nltk.download line:

nltk.download('popular')
or
nltk.download('punkt')
or
nltk.download('all')

我得到了这个堆栈跟踪:

I get this stack trace:

2020-08-26 13:33:45.742 19765-19765/com.pro.useyournotes E/ExceptionTag: com.chaquo.python.PyException: BadZipFile: File is not a zip file
    com.chaquo.python.PyException: BadZipFile: File is not a zip file
        at <python>.zipfile._RealGetContents(zipfile.py:1335)
        at <python>.zipfile.__init__(zipfile.py:1268)
        at <python>.nltk.data.__init__(data.py:936)
        at <python>.nltk.compat._decorator(compat.py:41)
        at <python>.nltk.data.__init__(data.py:396)
        at <python>.nltk.compat._decorator(compat.py:41)
        at <python>.nltk.data.find(data.py:544)
        at <python>.nltk.data.find(data.py:557)
        at <python>.nltk.tag.perceptron.__init__(perceptron.py:168)
        at <python>.nltk.tag._get_tagger(__init__.py:106)
        at <python>.nltk.tag.pos_tag_sents(__init__.py:178)
        at <python>.uyn_pre_processing.pre_processing(uyn_pre_processing.py:88)
        at <python>.uyn_analysis_workflow.analyse_new_data(uyn_analysis_workflow.py:62)
        at <python>.uyn_main.main(uyn_main.py:266)
        at <python>.chaquopy_java.call(chaquopy_java.pyx:285)
        at <python>.chaquopy_java.Java_com_chaquo_python_PyObject_callAttrThrows(chaquopy_java.pyx:257)
        at com.chaquo.python.PyObject.callAttrThrows(Native Method)
        at com.chaquo.python.PyObject.callAttr(PyObject.java:209)
        at com.pro.useyournotes.MainActivity.getPythonHello(MainActivity.kt:70)
        at com.pro.useyournotes.MainActivity.onCreate(MainActivity.kt:59)
        at android.app.Activity.performCreate(Activity.java:7136)
        at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

出现这个错误的代码是:

The code where this error occurs is:

    tagged_words=nltk.pos_tag_sents(tokenized_sentences)

at <python>.uyn_pre_processing.pre_processing(uyn_pre_processing.py:88)

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

I also don't know where the nltk-files are placed. Earlier when i just programmed on the python side i onlyremember using the import nltk command. Hopefully some already found a solution for using nltk.

推荐答案

我能够在模拟器上重现类似的东西.就我而言,根本原因是下载失败并出现 DECRYPTION_FAILED_OR_BAD_RECORD_MAC 错误,留下不完整的 ZIP 文件.

I was able to reproduce something similar on the emulator. In my case the root cause was that the download failed with a DECRYPTION_FAILED_OR_BAD_RECORD_MAC error, leaving behind an incomplete ZIP file.

这似乎是模拟器的一个低级问题,不是 Python 特有的.如果您可以确认您有同样的问题(通过在 nltk.download logcat 输出),然后请在 Android 问题跟踪器 在这里,以帮助鼓励他们修复它.

This appears to be a low-level problem with the emulator which isn't specific to Python. If you can confirm you have the same problem (by seeing DECRYPTION_FAILED_OR_BAD_RECORD_MAC in the nltk.download logcat output), then please add a star on the Android issue tracker here, to help encourage them to fix it.

您可以通过在循环中重复调用 nltk.download 直到它返回 true 来解决此问题.为了节省时间,您可能应该只下载您需要的数据文件.您可以通过简单地调用相应的函数并查看错误消息来找出这些是什么,例如:

You can work around this by calling nltk.download repeatedly in a loop until it returns true. To save time, you should probably only download the data files you need. You can find out what these are by simply calling the corresponding function and looking at the error message, e.g.:

>>> nltk.pos_tag_sents([["hello", "world"]])
...
LookupError: 
**********************************************************************
  Resource [93maveraged_perceptron_tagger[0m not found.
  Please use the NLTK Downloader to obtain the resource:
 
  [31m>>> import nltk
  >>> nltk.download('averaged_perceptron_tagger')

然后您可以将其添加到您的代码中:

Then you can add this to your code:

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

经过几次迭代后,这成功了,然后我能够成功调用 nltk.pos_tag_sents.

This succeeded after a few iterations, and I was then able to call nltk.pos_tag_sents successfully.

这篇关于nltk 和下载的 Chaquopy 问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆