gpt4 book ai didi

php - NLTK 找不到文件

转载 作者:太空宇宙 更新时间:2023-11-04 01:10:50 25 4
gpt4 key购买 nike

我遇到了一个 php 脚本的问题,该脚本说找不到文件/root/nltk_data/tokenizers/punkt/english.pickle 。但是我确认文件在这里。我多次下载了整个数据集)

php 脚本实际上运行一个 python 脚本,nltk(一个 python 模块)说它找不到/root/nltk_data/tokenizers/punkt/english.pickle

$dir = dirname(__FILE__);
$command = "/usr/bin/python ". $dir . "/test.py";
exec($command, $output);

另一方面,当我从命令行运行 python 脚本时,它工作得很好并且能够访问文件。

python test.py

是否可以让 php 看到这些文件?我 chmod 777 文件,但这没有帮助。

脚本包含:

#!/usr/bin/env/ python
import nltk
try:
tokens = nltk.word_tokenize("I like apples.")
tagged = nltk.pos_tag(tokens)
print "OK!"
#print ' * '.join(tokens)
except Exception:
print "error!"
pass

错误日志:

Traceback (most recent call last):
File "/var/zpanel/hostdata/zadmin/public_html/my_domain_com/test.py", line 39, in <module>
tagged = nltk.pos_tag(tokens)
File "/usr/local/lib/python2.7/site-packages/nltk-2.0.4-py2.7.egg/nltk/tag/__init__.py", line 99, in pos_tag
tagger = load(_POS_TAGGER)
File "/usr/local/lib/python2.7/site-packages/nltk-2.0.4-py2.7.egg/nltk/data.py", line 605, in load
resource_val = pickle.load(_open(resource_url))
File "/usr/local/lib/python2.7/site-packages/nltk-2.0.4-py2.7.egg/nltk/data.py", line 686, in _open
return find(path).open()
File "/usr/local/lib/python2.7/site-packages/nltk-2.0.4-py2.7.egg/nltk/data.py", line 467, in find
raise LookupError(resource_not_found)
LookupError:
Resource taggers/maxent_treebank_pos_tagger/english.pickle not found. Please use the NLTK Downloader to obtain the resource:
>>> nltk.download()
Searched in:
- '/root/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'

最佳答案

Resource ... not found 错误有两个原因:

  1. nltk_data 的路径设置不正确或 nltk_data 未下载
  2. nltk_data 目录已过时。

解决方案:

你的问题是因为你的原因 2. 所以最简单的方法是删除 nltk_data 目录中的所有内容,然后使用 python -c "import nltk; nltk.download 重新下载所有内容('全部')”

此外,您使用的是过时的 nltk 代码,因此我建议您更新到 NLTK 版本 3.x,因为从 NLTK 2.x 到 NLTK 3.x 有重大变化

问题:

nltk_data 目录的数据结构如下:

nltk_data/tokenizers/punkt/english.pickle

但是最新的nltk_data是:

nltk_data/taggers/maxent_treebank_pos_tagger/english.pickle

这表明您的 nltk_data 没有更新,尽管您使用的是更高版本的 NLTK 代码。


原因1,见下文

您在这些路径上没有 nltk_data 目录:

- '/root/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'

为确保您拥有 postman :

$ python
>>> import nltk
>>> nltk.download('maxent_treebank_pos_tagger')
[nltk_data] Downloading package maxent_treebank_pos_tagger to
[nltk_data] /home/alvas/nltk_data...
[nltk_data] Package maxent_treebank_pos_tagger is already up-to-
[nltk_data] date!
True

现在您将看到 nltk 保存数据的位置,对我来说,它是 /home/alvas/nltk_data

要知道 nltk 搜索目录的路径:

$ python
>>> import nltk
>>> nltk.data.path
['/home/alvas/nltk_data', '/usr/share/nltk_data', '/usr/local/share/nltk_data', '/usr/lib/nltk_data', '/usr/local/lib/nltk_data']

您也可以手动找到nltk_data 目录在系统中的保存位置,并将其添加到nltk.data.path,例如如果 nltk_data 保存在 /home/alvas/work_stuff/ 中:

>>> nltk.data.path.append(`/home/alvas/work_stuff/`)

为确保您拥有中央安装,请执行以下操作:

sudo python -m nltk.downloader -d /usr/share/nltk_data all

另见 downloading error using nltk.download()

关于php - NLTK 找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27730715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com