コードからnltkデータディレクトリを設定する方法は?
回答:
の項目を変更するだけでnltk.data.path
、簡単なリストです。
'/home/aankney/nltk_data'
リストの最初の要素としてありますが、私はサーバー上にいて、サーバーをnltk_data
使用している他の人と共有したいと思っています。nltkがこれをダウンロードパスの1つとして使用しないようにするにはどうすればよいですか?
コードから、http://www.nltk.org/_modules/nltk/data.html:
``nltk:path``: Specifies the file stored in the NLTK data
package at *path*. NLTK will search for these files in the
directories specified by ``nltk.data.path``.
次に、コード内で:
######################################################################
# Search Path
######################################################################
path = []
"""A list of directories where the NLTK data package might reside.
These directories will be checked in order when looking for a
resource in the data package. Note that this allows users to
substitute in their own versions of resources, if they have them
(e.g., in their home directory under ~/nltk_data)."""
# User-specified locations:
path += [d for d in os.environ.get('NLTK_DATA', str('')).split(os.pathsep) if d]
if os.path.expanduser('~/') != '~/':
path.append(os.path.expanduser(str('~/nltk_data')))
if sys.platform.startswith('win'):
# Common locations on Windows:
path += [
str(r'C:\nltk_data'), str(r'D:\nltk_data'), str(r'E:\nltk_data'),
os.path.join(sys.prefix, str('nltk_data')),
os.path.join(sys.prefix, str('lib'), str('nltk_data')),
os.path.join(os.environ.get(str('APPDATA'), str('C:\\')), str('nltk_data'))
]
else:
# Common locations on UNIX & OS X:
path += [
str('/usr/share/nltk_data'),
str('/usr/local/share/nltk_data'),
str('/usr/lib/nltk_data'),
str('/usr/local/lib/nltk_data')
]
パスを変更するには、可能なパスのリストに追加するだけです。
import nltk
nltk.data.path.append("/home/yourusername/whateverpath/")
またはWindowsの場合:
import nltk
nltk.data.path.append("C:\somewhere\farfar\away\path")
nltk/nltk/data
nltk.data.path.append('your/path/to/nltk_data')
すべてのスクリプトに追加する代わりに、NLTKはNLTK_DATA環境変数を受け入れます。(コードリンク)
オープン~/.bashrc
(または~/.profile
テキストエディタで)(例えばnano
、vim
、gedit
)、および以下の行を追加します。
export NLTK_DATA="your/path/to/nltk_data"
実行source
して環境変数をロードします
source ~/.bashrc
Pythonを開き、次の行を実行します
import nltk
nltk.data.path
あなたはすでにそこにあなたのnltkデータパスを見ることができます。
参照:nltk / nltk#1997に関する@alvationsの回答
uwsgiを使用している場合:
以前にダウンロードしたnltkデータにuwsgiアプリ(自分とは別のユーザーとして実行)にアクセスさせたいので、問題が発生していました。私のために働いたのは、次の行を追加することでしたmyapp_uwsgi.ini
:
env = NLTK_DATA=/home/myuser/nltk_data/
NLTK_DATA
@schemacsで提案されているように、これにより環境変数が設定されます。
この変更を行った後、uwsgiプロセスを再起動する必要がある場合があります。
パスの印刷に関する上記のfnjnのアドバイスの使用:
print(nltk.data.path)
私はWindowsでこのタイプのフォーマットのパス文字列を見ました:
C:\\Users\\my_user_name\\AppData\\Roaming\\SPB_Data
そのため、path.appendを使用したときに、パスをPythonタイプのスラッシュ '/'からダブルバックスラッシュ '\\'に切り替えました。
nltk.data.path.append("C:\\workspace\\my_project\\data\\nltk_books")
例外はなくなりました。