2

I have trained a HMM model to add punctuation into Arabic text and I want to save it to not repeating the training phase every time I enter a text to the model for tagging it .. I use pickle for these task as I see in tutorials. I do exactly like them but it fail and give me these error!.

Traceback (most recent call last):
  File "C:\Python27\file_pun_tag.py", line 205, in <module>
    hmm_tagger("test_file.txt")
  File "C:\Python27\file_pun_tag.py", line 179, in hmm_tagger
    hmm = pickle.load(saved_model)
  File "C:\Python27\lib\pickle.py", line 1378, in load
    return Unpickler(file).load()
  File "C:\Python27\lib\pickle.py", line 858, in load
    dispatch[key](self)
  File "C:\Python27\lib\pickle.py", line 1133, in load_reduce
    value = func(*args)
TypeError: __init__() takes at least 3 arguments (2 given)

I tried several solutions but none of them working with me ...
Here is the code where I save my model. It is working correctly for saving the model and creating the "hmm.pickle":

file = codecs.open("train_sents_hmm.txt", "r", "utf_8")
train_sents = file.readlines()
labelled_sequences, tag_set, symbols = load_pun(train_sents)
trainer = nltk.HiddenMarkovModelTrainer (tag_set, symbols)
hmm = trainer.train_supervised (labelled_sequences, estimator=lambda fd, bins: LidstoneProbDist(fd, 0.1, bins))

# save object
save_model = open("hmm.pickle", "wb")
pickle.dump(hmm, save_model, -1)
save_model.close()

And here is the code when i'm trying to load the model after saving it, and here where it gives me the error:

saved_model = open("hmm.pickle", "rb")
hmm = pickle.load(saved_model)
saved_model.close()
Islam Kh
  • 55
  • 6

0 Answers0