2017-07-04 82 views
1

我在NLTK训练PunktSentenceTokenizer并获得了泡菜文件 “learnt.pickle”:如何合并两个PunktSentenceTokenizer pickle文件?

ccopy_reg 
_reconstructor 
p0 
(cnltk.tokenize.punkt 
PunktSentenceTokenizer 
p1 
c__builtin__ 
object 
p2 
Ntp3 
Rp4 
(dp5 
S'_Token' 
p6 
cnltk.tokenize.punkt 
PunktToken 
p7 
sS'_lang_vars' 
p8 
g0 
(cnltk.tokenize.punkt 
PunktLanguageVars 
p9 
g2 
Ntp10 
Rp11 
I1 
bsS'_params' 
p12 
g0 
(cnltk.tokenize.punkt 
PunktParameters 
p13 
g2 
Ntp14 
Rp15 
(dp16 
S'sent_starters' 
p17 
c__builtin__ 
set 
p18 
((lp19 
tp20 
Rp21 
sS'collocations' 
p22 
g18 
((lp23 
tp24 
Rp25 
sS'abbrev_types' 
p26 
g18 
((lp27 
Vago 
p28 
aVgca 
p29 
aVe.g` 

我还有一个咸菜文件 “english.pickle”:

ccopy_reg 
_reconstructor 
p0 
(cnltk.tokenize.punkt 
PunktSentenceTokenizer 
p1 
c__builtin__ 
object 
p2 
Ntp3 
Rp4 
(dp5 
S'_Token' 
p6 
cnltk.tokenize.punkt 
PunktToken 
p7 
sS'_lang_vars' 
p8 
g0 
(cnltk.tokenize.punkt 
PunktLanguageVars 
p9 
g2 
Ntp10 
Rp11 
I1 
bsS'_params' 
p12 
g0 
(cnltk.tokenize.punkt 
PunktParameters 
p13 
g2 
Ntp14 
Rp15 
(dp16 
S'sent_starters' 
p17 
c__builtin__ 
set 
p18 
((lp19 
Vamong 
p20 
aVsince 
p21 
aVthey 
p22 
aVindeed 
p23 
aVsome 
p24 
aVsales 
p25 
aVin 
p26 
aVmoreover 
p27 
aVyet` 

我想合并它们以形成一个单一的.pickle文件(这必须与PunktSentenceTokenizer的一起使用)。
我使用下面的代码:

import pickle 
my_dict_final = {} 
with open('english.pickle', 'rb') as f: 
    my_dict_final.update(pickle.load(f)) 
with open('learnt.pickle', 'rb') as f: 
    my_dict_final.update(pickle.load(f)) 
out = open("finaldict.pickle","wb") 
pickle.dump(my_dict_final, out) 
out.close() 

但它显示了这个错误:

TypeError: 'PunkSentenceTokenizer' object is not iterable.

我不知道这意味着什么(我不是编程非常好)... 。但我真的需要一个解决方案....

+0

@COLDSPEED感谢帮助格式 – ashesh

回答

1

你不能“合并两个泡菜文件”。酸洗只是一种文件(“序列化”)格式,所以你可以对内容做什么,完全取决于你所腌制的对象的结构。就你而言,你似乎认为(不)腌制的物体是字典;但实际上它们是PunktSentenceTokenizer对象,包括它们的内部频率表。这占到TypeError

唯一可行的选择是研究PunktSentenceTokenizer的内部结构,找出需要合并的内容以及是否有任何合并两个模型的有意义的感觉。但对于您的(明显的)预期用途,我建议您简单地将您的自定义训练语料库连接到大量正常间断的英语语料库(例如,gutenberg语料库或任何其他的纯文本文件集合),并且训练单个语句检测模型对组合数据。

+0

亲爱的@alexis,你是我的英雄! – ashesh