2014-05-16 21 views
5

Właśnie zacząłem mój pierwszy projekt NLTK i jestem zdezorientowany co do właściwej konfiguracji. Potrzebuję kilku zasobów, takich jak Tokenizer Punktów i maksymalny tag Tag. Ja sam pobrałem je za pomocą GUI nltk.download(). Dla moich współpracowników chcę oczywiście, aby te rzeczy były pobierane automatycznie. W dokumencie nie znalazłem żadnego idiomatycznego kodu.Jak sprawdzić, czy zasób nltk jest już zainstalowany na komputerze, na którym działa mój kod?

Czy mam po prostu wstawić nltk.data.load('tokenizers/punkt/english.pickle') i tym podobne do kodu? Czy to będzie pobieranie zasobów przy każdym uruchomieniu skryptu? Czy mam przekazywać użytkownikowi (tj. Moim współtwórcom) opinie na temat tego, co jest pobierane i dlaczego trwa to tak długo? MUSI być tam sprzęt, który spełnia swoją funkcję, prawda? :)

// Edit Aby explify moje pytanie:
Jak mogę sprawdzić, czy dany zasób NLTK (jak Punkt Tokenizer) jest już zainstalowany na komputerze z systemem mojego kodu i zainstalować go, jeśli nie jest?

+0

Mam problem z ustaleniem, o co prosisz. Przykładem może być zwięzły, testowalny przykład demonstrujący twoje obecne podejście. –

+1

Pozwól mi zmienić pytanie: Jak sprawdzić, czy zasób nltk (taki jak Tokenizer punktu) jest już zainstalowany na komputerze, na którym działa mój kod, i zainstalować go, jeśli tak nie jest? – Zakum

+0

Edytuj swoje pytanie, aby dopasować swój komentarz. Umieszczenie krótkiego pytania w komentarzach może pozwolić mi go przeoczyć: – Spaceghost

Odpowiedz

8

Można użyć funkcji nltk.data.find() patrz https://github.com/nltk/nltk/blob/develop/nltk/data.py:

>>> import nltk 
>>> nltk.data.find('tokenizers/punkt.zip') 
ZipFilePathPointer(u'/home/alvas/nltk_data/tokenizers/punkt.zip', u'') 

Gdy zasób nie jest dostępny znajdziesz błąd:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/nltk-3.0a3-py2.7.egg/nltk/data.py", line 615, in find 
    raise LookupError(resource_not_found) 
LookupError: 
********************************************************************** 
    Resource u'punkt.zip' not found. Please use the NLTK Downloader 
    to obtain the resource: >>> nltk.download() 
    Searched in: 
    - '/home/alvas/nltk_data' 
    - '/usr/share/nltk_data' 
    - '/usr/local/share/nltk_data' 
    - '/usr/lib/nltk_data' 
    - '/usr/local/lib/nltk_data' 
********************************************************************** 

Najprawdopodobniej chcesz zrobić coś takiego, aby zapewnić, że Twoi współpracownicy mają pakiet:

>>> try: 
...  nltk.data.find('tokenizers/punkt') 
... except LookupError: 
...  nltk.download('punkt') 
... 
[nltk_data] Downloading package punkt to /home/alvas/nltk_data... 
[nltk_data] Package punkt is already up-to-date! 
True 
+1

działa dla mnie bez rozszerzenia ".zip" – xagg

Powiązane problemy