В рамках моей функции 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, чтобы он оставался обученным той же части текста, чтобы я мог быстрее использовать его со своим сценарием?
Почему бы и нет соленый огурец Это?
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>
Других решений пока нет …