0

docker コンテナーで news3k を使用しています。必要な nltk データをすべてダウンロードしましたが、実行するとこの問題が発生article.nlp()article.nlp()article.summary.

Flask アプリで同じコードを使用すると動作しましたが、今は Django (+ DRF) でテストしていますが、次のエラーが発生しています:

web_1  |   File "/usr/local/lib/python3.6/site-packages/newspaper/article.py", line 361, in nlp
web_1  |     summary_sents = nlp.summarize(title=self.title, text=self.text, max_sents=max_sents)
web_1  |   File "/usr/local/lib/python3.6/site-packages/newspaper/nlp.py", line 45, in summarize
web_1  |     sentences = split_sentences(text)
web_1  |   File "/usr/local/lib/python3.6/site-packages/newspaper/nlp.py", line 157, in split_sentences
web_1  |     tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
web_1  |   File "/usr/local/lib/python3.6/site-packages/nltk/data.py", line 752, in load
web_1  |     opened_resource = _open(resource_url)
web_1  |   File "/usr/local/lib/python3.6/site-packages/nltk/data.py", line 877, in _open
web_1  |     return find(path_, path + [""]).open()
web_1  | TypeError: must be str, not list

を見つけるのに問題があるようですがtokenizers/punkt/english.pickle、nltk_data を確認すると、そこにあります。

これがどこから来るのか、何か分かりますか?

更新

コードは非常に単純です。これは私のDjangoビューです:

from newspaper import Article

article = Article(url, language=LANG)
article.download()
article.parse()
article.nlp() <---- The problem happens here most probably
article.summary

私は Django Rest Framwork を使用しているので、このフィールドを使用してシリアル化しています:

summary = serializers.CharField(max_length=5000, required=False)   
4

0 に答える 0