为了账号安全,请及时绑定邮箱和手机立即绑定

Chaquopy 的 nltk 和下载问题

Chaquopy 的 nltk 和下载问题

Qyouu 2023-06-27 13:13:50
根据Chaquopy 无法下载资源,我不确定问题是否得到解决。这是 nltk 上下文中的问题。包含 nltk.download 行之一后:nltk.download('popular')ornltk.download('punkt')ornltk.download('all')我得到这个堆栈跟踪: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)出现这个错误的代码是:    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 的解决方案。
查看完整描述

2 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

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

这似乎是模拟器的低级问题,并非 Python 特有的。如果您可以确认您有同样的问题(通过在nltk.download logcat输出中查看 DECRYPTION_FAILED_OR_BAD_RECORD_MAC),

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

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

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


while not nltk.download('averaged_perceptron_tagger'):

    print("Retrying download")

经过几次迭代后成功了,然后我就可以nltk.pos_tag_sents成功调用了。


查看完整回答
反对 回复 2023-06-27
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

将其添加到您的 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" />


查看完整回答
反对 回复 2023-06-27
  • 2 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信