Чтобы загрузить конкретный набор данных / модели, используйте функцию nltk.download()
, например. если вы хотите загрузить токенизатор предложения punkt
, используйте:
$ python3
>>> import nltk
>>> nltk.download('punkt')
Если вы не знаете, какие данные / модель вам нужны, вы можете начать с основного списка данных + моделей с:
>>> import nltk
>>> nltk.download('popular')
Он загрузит список «популярных» ресурсов, в том числе:
В случае, если кто-либо избегает ошибок при загрузке больших наборов данных из nltk
, из https://stackoverflow.com/a/38135306/610569
$ rm /Users//nltk_data/corpora/panlex_lite.zip
$ rm -r /Users//nltk_data/corpora/panlex_lite
$ python
>>> import nltk
>>> dler = nltk.downloader.Downloader()
>>> dler._update_index()
>>> dler._status_cache['panlex_lite'] = 'installed' # Trick the index to treat panlex_lite as it's already installed.
>>> dler.download('popular')
Из v3.2.5 NLTK имеет более информативное сообщение об ошибке , когда ресурс nltk_data
не найден, например:
>>> from nltk import word_tokenize
>>> word_tokenize('x')
Traceback (most recent call last):
File "", line 1, in
File "/Users/l/alvas/git/nltk/nltk/tokenize/__init__.py", line 128, in word_tokenize
sentences = [text] if preserve_line else sent_tokenize(text, language)
File "/Users//alvas/git/nltk/nltk/tokenize/__init__.py", line 94, in sent_tokenize
tokenizer = load('tokenizers/punkt/{0}.pickle'.format(language))
File "/Users/alvas/git/nltk/nltk/data.py", line 820, in load
opened_resource = _open(resource_url)
File "/Users/alvas/git/nltk/nltk/data.py", line 938, in _open
return find(path_, path + ['']).open()
File "/Users/alvas/git/nltk/nltk/data.py", line 659, in find
raise LookupError(resource_not_found)
LookupError:
**********************************************************************
Resource punkt not found.
Please use the NLTK Downloader to obtain the resource:
>>> import nltk
>>> nltk.download('punkt')
Searched in:
- '/Users/alvas/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
- ''
**********************************************************************
nltk_data
(автоматически), см. https://stackoverflow.com/a/36383314/610569 nltk_data
в другую путь, см. https://stackoverflow.com/a/48634212/610569 nltk_data
(т. е. установить другой путь для NLTK для поиска nltk_data
) , см. https://stackoverflow.com/a/22987374/610569 в соответствии с вашим обновлением, я думаю, вам не нужен цикл for, вам нужно это,
function countdown(integer) {
var time = setInterval(function(){
document.getElementById("cds").value="->"+(integer--)+"<-"
if (integer == 0) clearInterval(time);
},1000);
}
for( var i = integer; i > 0 ; i-- )
{
document.write(i);
}
Быстрее (я проверил) и легче читать ...
var i = 100;
while(i--) {
document.write(i);
}
Вы можете использовать приведенный ниже сценарий.
for( var i = integer; i > 0 ; i-- )
{
document.write(i);
}
Я предполагаю, что вы хотите показать обратный отсчет числа в указанном поле ввода. Позвольте мне попробовать.
<html>
<head>
<script type="text/javascript">
function countdown(count) {
document.getElementById("cds").value = count;
if (count > 0) {
setTimeout("countdown(" + (count - 1) + ")", 1000);
}
}
</script>
</head>
<body onload="countdown(10)">
<input type="text" id="cds" value="0" />
</body>
</html>
Уловка состоит в том, чтобы поместить вызов рекурсии в функцию setTimeout и окружить его условием, которое останавливает обратный отсчет при достижении 0.
Цикл for
выполняется сразу (не дожидаясь срабатывания setTimeout
), и, следовательно, ваш код установит целое число
количество таймеров одновременно (с интервалом в микросекунды), и только последний (где i = 1) будет виден пользователю. Вы должны сделать это как:
var counter = integer;
setTimeout("update();", 1000);
function update()
{
document.getElementById("cds").value= "->" + counter + "<-";
if(--counter == 0)
return;
setTimeout("update();", 1000);
}