在我的PHP函数中,我正在调用这样的Python脚本:
$foo = exec("python tokenize.py $bar");
问题是,现在我已经构建了一个迭代执行上述命令的函数,完成时间超过五分钟,因为我使用的代码如下:
train_text = state_union.raw("1963-Johnson.txt")
custom_sent_tokenizer = PunktSentenceTokenizer(train_text)
即使对于state_union包中最短的语料库之一,训练我的PST的操作也需要一些时间。
我尝试将输出存储在普通的txt文件中,但我在文档here中找不到返回类型。我想这是一个迭代器,就像包中的其他东西一样,但是我试图将迭代器转换为列表并且失败了。
问题是:
1。什么是PunktSentenceTokenizer的返回类型,我可以存储它吗?
2。从.txt文件或任何其他来源读取它比在执行我的PHP程序时反复训练更快吗?
第3。你有任何其他想法如何使用PST,所以它仍然在相同的文本部分训练,所以我可以更快地使用它与我的脚本?
答案 0 :(得分:2)
为什么不pickle呢?
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>