更新回答:NLTK适用于2.7井.我有3.2.我卸载了3.2并安装了2.7.现在它的作品!!
我已经安装了NLTK并试图下载NLTK数据.我所做的是按照本网站上的说明进行操作:http://www.nltk.org/data.html
我下载了NLTK,安装了它,然后尝试运行以下代码:
>>> import nltk
>>> nltk.download()
Run Code Online (Sandbox Code Playgroud)
它给了我如下错误信息:
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
nltk.download()
AttributeError: 'module' object has no attribute 'download'
Directory of C:\Python32\Lib\site-packages
Run Code Online (Sandbox Code Playgroud)
都尝试nltk.download()
和nltk.downloader()
,既给了我的错误信息.
然后我习惯help(nltk)
拿出包裹,它显示以下信息:
NAME
nltk
PACKAGE CONTENTS
align
app (package)
book
ccg (package)
chat (package)
chunk (package)
classify (package)
cluster (package)
collocations
corpus (package)
data
decorators
downloader
draw (package)
examples (package)
featstruct
grammar
help
inference (package)
internals
lazyimport
metrics (package)
misc (package) …
Run Code Online (Sandbox Code Playgroud) 我正在使用Python试验NLTK包.我尝试使用下载NLTK nltk.download()
.我收到了这种错误信息.如何解决这个问题呢?谢谢.
我使用的系统是在VMware下安装的Ubuntu.IDE是Spyder.
使用后nltk.download('all')
,它可以下载一些软件包,但下载时会收到错误信息oanc_masc
我试图nltk
在计算服务器上下载/更新python 包,它返回了这个[Errno 122] Disk quota exceeded:
错误.
特别:
[nltk_data] Downloading package stop words to /home/sh2264/nltk_data...
[nltk_data] Error downloading u'stopwords' from
[nltk_data] <https://raw.githubusercontent.com/nltk/nltk_data/gh-
[nltk_data] pages/packages/corpora/stopwords.zip>: [Errno 122]
[nltk_data] Disk quota exceeded:
[nltk_data] u'/home/sh2264/nltk_data/corpora/stopwords.zip
False
Run Code Online (Sandbox Code Playgroud)
我怎样才能更改nltk
包的整个路径,以及我应该做出哪些其他更改以确保无错加载nltk
?
我想调用 NLTK 通过 pyspark 在 databricks 上做一些 NLP。我已经从 databricks 的库选项卡安装了 NLTK。它应该可以从所有节点访问。
我的 py3 代码:
import pyspark.sql.functions as F
from pyspark.sql.types import StringType
import nltk
nltk.download('punkt')
def get_keywords1(col):
sentences = []
sentence = nltk.sent_tokenize(col)
get_keywords_udf = F.udf(get_keywords1, StringType())
Run Code Online (Sandbox Code Playgroud)
我运行上面的代码并得到:
[nltk_data] Downloading package punkt to /root/nltk_data...
[nltk_data] Package punkt is already up-to-date!
Run Code Online (Sandbox Code Playgroud)
当我运行以下代码时:
t = spark.createDataFrame(
[(2010, 1, 'rdc', 'a book'), (2010, 1, 'rdc','a car'),
(2007, 6, 'utw', 'a house'), (2007, 6, 'utw','a hotel')
],
("year", "month", "u_id", "objects"))
t1 = t.withColumn('keywords', …
Run Code Online (Sandbox Code Playgroud) 可以下载 NLTK 语料库punkt
并wordnet
通过命令行:
python3 -m nltk.downloader punkt wordnet
Run Code Online (Sandbox Code Playgroud)
如何使用 下载 NLTKrequirements.txt
语料库pip install -r requirements.txt
?
例如,可以通过添加模型的 URL 来下载 spacy 模型requirements.txt
(pip install -r requirements.txt
例如https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz #egg=en_core_web_sm==2.0.0
中requirements.txt
)
我试图在Spark独立集群上使用带有pyspark的NLTK包中的punkt tokenizer.NLTK已安装在各个节点上,但nltk_data文件夹不在NLTK预期的位置(/ usr/share/nltk_data).
我正在尝试使用punkt tokenizer,它位于(my/my_user/nltk_data)中.
我已经设定:
envv1 = "/whatever/my_user/nltk_data"
os.environ['NLTK_DATA'] = envv1
Run Code Online (Sandbox Code Playgroud)
打印nltk.data.path表示第一个条目是我的nltk_data文件夹实际所在的位置.
在from nltk import word_tokenize
去罚款,但是当涉及到调用函数word_tokenize()
,我得到以下错误:
ImportError: No module named nltk.tokenize
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,我都可以从nltk.corpus访问资源.当我尝试nltk.download()时,很明显我已经下载了punkt tokenizer.我甚至可以在pyspark之外使用punkt tokenizer.
我在AWS Lambda中使用NLTK语料库(特别是停用词)时遇到了困难.我知道语料库需要下载并使用NLTK.download('stopwords')完成,并将它们包含在用于在nltk_data/corpora/stopwords中上传lambda模块的zip文件中.
代码中的用法如下:
from nltk.corpus import stopwords
stopwords = stopwords.words('english')
nltk.data.path.append("/nltk_data")
Run Code Online (Sandbox Code Playgroud)
这将从Lambda日志输出中返回以下错误
module initialization error:
**********************************************************************
Resource u'corpora/stopwords' not found. Please use the NLTK
Downloader to obtain the resource: >>> nltk.download()
Searched in:
- '/home/sbx_user1062/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
- '/nltk_data'
**********************************************************************
Run Code Online (Sandbox Code Playgroud)
我还尝试通过包含直接加载数据
nltk.data.load("/nltk_data/corpora/stopwords/english")
Run Code Online (Sandbox Code Playgroud)
这会产生不同的错误
module initialization error: Could not determine format for file:///stopwords/english based on its file
extension; use the "format" argument to specify the format explicitly.
Run Code Online (Sandbox Code Playgroud)
它可能在从Lambda zip加载数据时遇到问题,需要将其存储在外部..比如S3,但这看起来有点奇怪.
知道什么格式的
有谁知道我哪里出错了?
我在AWS Lambda中遇到NLTK包的问题.但是我认为这个问题更多地与Lambda中的路径配置不正确有关.NLTK无法找到本地存储的数据库,而不是模块安装的一部分.SO上列出的许多解决方案都是简单的路径配置,可以在这里找到,但我认为这个问题与Lambda中的路径有关:
下载什么以使nltk.tokenize.word_tokenize有效?
还应该提到这也与我在此发布的上一个问题有关 使用NLTK语料库和Python中的AWS Lambda函数
但问题似乎更为笼统,因此我选择重新定义问题,因为它涉及如何正确配置Lambda中的路径环境以使用需要外部库(如NLTK)的模块.NLTK将很多数据存储在本地的nltk_data文件夹中,但是在lambda zip中包含此文件夹以供上传,它似乎找不到它.
Lambda func zip文件中还包含以下文件和目录:
\nltk_data\taggers\averaged_perceptron_tagger\averaged_perceptron_tagger.pickle
\nltk_data\tokenizers\punkt\english.pickle
\nltk_data\tokenizers\punkt\PY3\english.pickle
Run Code Online (Sandbox Code Playgroud)
从以下站点看来,var/task /似乎是lambda函数执行的文件夹,并且我尝试包含此路径无效.https://alestic.com/2014/11/aws-lambda-environment/
从文档中看来,似乎有许多环境变量可以使用但是我不知道如何将它们包含在python脚本中(来自windows,而不是linux)http://docs.aws.amazon. COM /λ/最新/ DG /电流支持,versions.html
希望在此处提出这个问题,任何人都有配置Lambda路径的经验.尽管有搜索,我还没有看到很多关于这个特定问题的问题,所以希望解决这个问题可能有用
代码就在这里
import nltk
import pymysql.cursors
import re
import rds_config
import logging
from boto_conn import botoConn
from warnings import filterwarnings
from nltk import word_tokenize
nltk.data.path.append("/nltk_data/tokenizers/punkt")
nltk.data.path.append("/nltk_data/taggers/averaged_perceptron_tagger")
logger = logging.getLogger()
logger.setLevel(logging.INFO)
rds_host = "nodexrd2.cw7jbiq3uokf.ap-southeast-2.rds.amazonaws.com"
name = rds_config.db_username
password = rds_config.db_password
db_name = rds_config.db_name
filterwarnings("ignore", category=pymysql.Warning)
def parse():
tknzr = word_tokenize
stopwords = ['i', 'me', 'my', 'myself', 'we', …
Run Code Online (Sandbox Code Playgroud) 在linux下,我设置了env var $ NLTK_DATA('/ home/user/data/nltk'),并按预期吹出测试工作
>>> from nltk.corpus import brown
>>> brown.words()
['The', 'Fulton', 'County', 'Grand', 'Jury', 'said', ...]
Run Code Online (Sandbox Code Playgroud)
但是当运行另一个python脚本时,我得到了:
LookupError:
**********************************************************************
Resource u'tokenizers/punkt/english.pickle' not found. Please
use the NLTK Downloader to obtain the resource: >>>
nltk.download()
Searched in:
- '/home/user/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
- u''
Run Code Online (Sandbox Code Playgroud)
我们可以看到,在手动附加NLTK_DATA目录后,nltk不会向搜索路径添加$ NLTK_DATA:
nltk.data.path.append("/NLTK_DATA_DIR");
Run Code Online (Sandbox Code Playgroud)
脚本按预期运行,问题是:
如何让nltk自动将$ NLTK_DATA添加到它的搜索路径?
nltk ×9
python ×8
aws-lambda ×2
nlp ×2
pyspark ×2
python-2.7 ×2
apache-spark ×1
corpus ×1
default ×1
path ×1
pip ×1
python-3.x ×1
search-path ×1
spyder ×1
ubuntu ×1