コードからnltkデータディレクトリを設定する方法は?


回答:


73

の項目を変更するだけでnltk.data.path、簡単なリストです。


30
またはNLTK_DATA環境変数を設定します。
schemacs 2013年

私のnltk.data.pathは'/home/aankney/nltk_data'リストの最初の要素としてありますが、私はサーバー上にいて、サーバーをnltk_data使用している他の人と共有したいと思っています。nltkがこれをダウンロードパスの1つとして使用しないようにするにはどうすればよいですか?
オースティンA

43

コードから、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")

このファイルはどのディレクトリに含まれますか?
hlin117 2014

NLTKの元のソースコードにあります。ソースコードを保存するディレクトリに移動し、次に移動しますnltk/nltk/data
alvas 2014

stackoverflow.com/questions/36382937/…magically_find_nltk_data()から見てください
alvas 2016


15

nltk.data.path.append('your/path/to/nltk_data')すべてのスクリプトに追加する代わりに、NLTKはNLTK_DATA環境変数を受け入れます。(コードリンク

オープン~/.bashrc(または~/.profileテキストエディタで)(例えばnanovimgedit)、および以下の行を追加します。

export NLTK_DATA="your/path/to/nltk_data"

実行sourceして環境変数をロードします

source ~/.bashrc


テスト

Pythonを開き、次の行を実行します

import nltk
nltk.data.path

あなたはすでにそこにあなたのnltkデータパスを見ることができます。

参照:nltk / nltk#1997に関する@alvationsの回答


1

uwsgiを使用している場合:

以前にダウンロードしたnltkデータにuwsgiアプリ(自分とは別のユーザーとして実行)にアクセスさせたいので、問題が発生していました。私のために働いたのは、次の行を追加することでしたmyapp_uwsgi.ini

env = NLTK_DATA=/home/myuser/nltk_data/

NLTK_DATA@schemacsで提案されているように、これにより環境変数が設定されます。
この変更を行った後、uwsgiプロセスを再起動する必要がある場合があります。


0

別の解決策は、それを先取りすることです。

nltk nltk.download()をインポートしてみてください

コーパスをダウンロードするかどうかを尋ねるウィンドウボックスが表示されたら、ダウンロード先のディレクトリを指定できます。


0

パスの印刷に関する上記の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")

例外はなくなりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.