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)