NLTK PunktSequenceTokenizer返回类型或在迭代函数中更快地使用它的方法?

时间:2015-08-28 01:20:43

标签: php python-3.x nltk

在我的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,所以它仍然在相同的文本部分训练,所以我可以更快地使用它与我的脚本?

1 个答案:

答案 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>