Возвращаемый тип NLTK PunktSequenceTokenizer или способ его более быстрого использования в итерационной функции?

В рамках моей функции PHP я вызываю скрипт Python, например:

 $foo = exec("python tokenize.py $bar");

Проблема в том, что теперь я построил функцию, которая выполняет вышеуказанную команду итеративно, и для ее завершения требуется более пяти минут из-за кода, который я использую ниже:

train_text = state_union.raw("1963-Johnson.txt")
custom_sent_tokenizer = PunktSentenceTokenizer(train_text)

Операция обучения моего PST занимает некоторое время даже для одной из самых коротких корпусов в пакете state_union.

Я пытался сохранить вывод в текстовом файле, но не могу найти тип возврата в документации Вот. Я думаю, что это итератор, как и все остальное в пакете, но я попытался преобразовать итератор в список и потерпел неудачу.

Вопросы:

1. Какой тип возврата у PunktSentenceTokenizer и можно ли его сохранить?

2. Будет ли чтение из файла .txt или из любого другого источника быстрее, чем повторное обучение при выполнении моей программы PHP?

3. Есть ли у вас какие-либо идеи о том, как использовать PST, чтобы он оставался обученным той же части текста, чтобы я мог быстрее использовать его со своим сценарием?

0

Решение

Почему бы и нет соленый огурец Это?

import pickle
... # other imports and stuff
custom_sent_tokenizer = PunktSentenceTokenizer(train_text)
pickle.dump(custom_sent_tokenizer, open( "save.p", "wb" ))

Теперь вы можете легко загрузить обученный токенизатор в другой вызов или скрипт:

>>> import pickle
>>> pickle.load(open( "save.p", "rb" ) )
<nltk.tokenize.punkt.PunktSentenceTokenizer object at 0x00000000023B9EB8>
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]