質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Google App Engine

Google App Engineは、Googleの管理するデータセンター上でウェブアプリケーションの開発が可能なクラウドコンピュータ技術です。Java、Python、Go用にSDKが用意されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

1301閲覧

pythonライブラリnltkをgaeで使いたい

Hinataa

総合スコア4

Google App Engine

Google App Engineは、Googleの管理するデータセンター上でウェブアプリケーションの開発が可能なクラウドコンピュータ技術です。Java、Python、Go用にSDKが用意されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2021/04/27 15:41

編集2021/04/27 15:45

前提・実現したいこと

GAE(GoogleAppEngine)でnltkを使用したpythonのスクリプトを実行したいと思っています。

発生している問題・エラーメッセージ

どうやらnltkに使用するデータが見つからないようです。

LookupError at find (/layers/google.python.pip/pip/lib/python3.8/site-packages/nltk/data.py:583) at __load (/layers/google.python.pip/pip/lib/python3.8/site-packages/nltk/corpus/util.py:83)

該当のソースコード

python

1def get_key_phrase(text, n=5): 2 """キーフレーズ処理 3 Args: 4 text ([type]): キーフレーズ対象の文字列 5 n (int, optional): [description]. Defaults to 10. 6 gc_collect (bool, optional): [description]. Defaults to False. 7 8 Returns: 9 [type]: [description] 10 """ 11 from spacy.lang.ja import stop_words 12 import ginza # pip install ginza 13 import nltk # pip install nltk 14 nltk.data.path.append("[アプリ名]/nltk_data") 15 import spacy 16 import pke # pip install git+https://github.com/boudinfl/pke.git 17 18 # MultipartiteRankなどのキーフレーズの手法については以下のサイトが参考になります 19 # https://www.ogis-ri.co.jp/otc/hiroba/technical/similar-document-search/part5.html 20 pke.base.lang_stopwords['ja_ginza'] = 'japanese' 21 22 # spacyに設定されているstopwordを使う 23 spacy_model = spacy.load("ja_ginza") # GiNZAモデルの読み込み 24 stopwords = list(stop_words.STOP_WORDS) 25 nltk.corpus.stopwords.words_org = nltk.corpus.stopwords.words 26 nltk.corpus.stopwords.words = lambda lang: stopwords if lang == 'japanese' else nltk.corpus.stopwords.words_org( 27 lang) 28 29 extractor = pke.unsupervised.MultipartiteRank() 30 extractor.load_document(input=text, language='ja_ginza', 31 normalization=None, spacy_model=spacy_model) 32 extractor.candidate_selection(pos={'NOUN', 'PROPN', 'ADJ', 'NUM'}) 33 extractor.candidate_weighting(threshold=0.74, method='average', alpha=1.1) 34 key_phrase = extractor.get_n_best(n) 35 36 return key_phrase

試したこと

これに対してこちらのサイトを参考にnltkからstopwordsのダウンロードとtokenizerのダウンロードを行い、アプリケーションフォルダ内にnltk_dataのフォルダを作成し、その中にダウンロードしたファイルなどをコピーしました。
またapp.yamlで環境変数を

env_variables: NLTK_DATA: "./nltk_data/"

のように設定しました。
また、pythonファイル内で

python

1import nltk 2nltk.data.path.append("[アプリ名]/nltk_data")

パスの設定を行いましたが、依然として同様のエラーが出てしまいます。解決方法を教えていただきたいです。

補足情報(FW/ツールのバージョンなど)

フォルダ構造

[アプリ名] |___nltk_data #stopwordsやtokenizerをコピーしたファイル |___app.yaml #pythonのruntimeとinstance_class, 環境変数を設定. |___main.py #該当のpythonファイル |___~~~.json # firestore使用に必要なjson

このようになっております。

その他参考にしたサイト

https://stackoverflow.com/questions/19749541/nltk-for-google-app-engine
https://stackoverflow.com/questions/1286301/using-the-python-nltk-2-0b5-on-the-google-app-engine?noredirect=1&lq=1

最後に

長文になりましたが、何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

なぜか動くようになりました。時が解決してくれるようです。

投稿2021/04/28 01:43

Hinataa

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問