【问题标题】:How to merge two PunktSentenceTokenizer pickle files?如何合并两个 PunktSentenceTokenizer 泡菜文件?
【发布时间】:2017-12-08 11:04:00
【问题描述】:

我在NLTK中训练了PunktSentenceTokenizer,得到了一个pickle文件“learnt.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 的 tokenizer 一起使用)。
我正在使用以下代码:

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' 对象不可迭代。

我不知道这意味着什么(我不太擅长编程)....但我真的需要一个解决方案....

【问题讨论】:

  • @COLDSPEED 感谢格式化方面的帮助

标签: python-2.7 nltk pickle tokenize text-segmentation


【解决方案1】:

您不能“合并两个 pickle 文件”。酸洗只是一种文件(“序列化”)格式,因此您可以对内容做什么完全取决于您酸洗的对象的结构。在您的情况下,您似乎假设(未)腌制的对象是字典;但实际上它们是PunktSentenceTokenizer 对象,包括它们的内部频率表。这就是TypeError

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

【讨论】:

  • 亲爱的@alexis,你是我的英雄!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多