如何解决调用NLTK并在databricks pyspark上找不到“ punkt”错误
我想打电话给NLTK在pyspark的databricks上做一些NLP。 我已经从数据块的库选项卡中安装了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())
我运行上面的代码并得到:
[nltk_data] Downloading package punkt to /root/nltk_data...
[nltk_data] Package punkt is already up-to-date!
当我运行以下代码时:
t = spark.createDataFrame(
[(2010,1,'rdc','a book'),(2010,'a car'),(2007,6,'utw','a house'),'a hotel')
],("year","month","u_id","objects"))
t1 = t.withColumn('keywords',get_keywords_udf('objects'))
t1.show() # error here !
我遇到错误:
<span class="ansi-red-fg">>>> import nltk
PythonException:
An exception was thrown from the Python worker. Please see the stack trace below.
Traceback (most recent call last):
LookupError:
**********************************************************************
Resource punkt not found.
Please use the NLTK Downloader to obtain the resource:
>>> import nltk
>>> nltk.download('punkt')
For more information see: https://www.nltk.org/data.html
Attempted to load tokenizers/punkt/PY3/english.pickle
Searched in:
- '/root/nltk_data'
- '/databricks/python/nltk_data'
- '/databricks/python/share/nltk_data'
- '/databricks/python/lib/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
- ''
我已经下载了“ punkt”。它位于
/root/nltk_data/tokenizers
我已经使用文件夹位置更新了spark环境中的PATH。
为什么找不到它?
NLTK. Punkt not found和此How to config nltk data directory from code?处的解决方案 但他们都不适合我。
我试图更新
nltk.data.path.append('/root/nltk_data/tokenizers/')
它不起作用。 看来nltk无法看到新添加的路径!
我还复制了punkz到nltk将搜索的路径。
cp -r / root / nltk_data / tokenizers / punkt / root / nltk_data
但是,nltk仍然看不到它。
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。