繁体   English   中英

NLTK punkt 的训练数据格式

[英]training data format for NLTK punkt

我想运行nltk Punkt来拆分句子。 没有训练模型,所以我单独训练模型,但我不确定我使用的训练数据格式是否正确。

我的训练数据是每行一个句子。 我找不到关于此的任何文档,只有此线程 ( https://groups.google.com/forum/#!topic/nltk-users/bxIEnmgeCSM ) 阐明了有关训练数据格式的一些信息。

NLTK Punkt句子分词器的正确训练数据格式是什么?

是的,Punkt 标记器是神奇的无监督句子边界检测。 而且作者的姓氏也很酷, Kiss and Strunk (2006) 这个想法是使用NO 注释来训练句子边界检测器,因此输入将是任何类型的明文(只要编码一致)。

要训​​练新模型,只需使用:

import nltk.tokenize.punkt
import pickle
import codecs
tokenizer = nltk.tokenize.punkt.PunktSentenceTokenizer()
text = codecs.open("someplain.txt","r","utf8").read()
tokenizer.train(text)
out = open("someplain.pk","wb")
pickle.dump(tokenizer, out)
out.close()

为了获得更高的精度并允许您随时停止训练并仍然为您的分词器保存适当的泡菜,请查看此用于训练德语句子分词器的代码片段, https://github.com/alvations/DLTK/blob/主/dltk/tokenize/tokenizer.py

def train_punktsent(trainfile, modelfile):
  """ Trains an unsupervised NLTK punkt sentence tokenizer. """
  punkt = PunktTrainer()
  try:
    with codecs.open(trainfile, 'r','utf8') as fin:
      punkt.train(fin.read(), finalize=False, verbose=False)
  except KeyboardInterrupt:
    print 'KeyboardInterrupt: Stopping the reading of the dump early!'
  ##HACK: Adds abbreviations from rb_tokenizer.
  abbrv_sent = " ".join([i.strip() for i in \
                         codecs.open('abbrev.lex','r','utf8').readlines()])
  abbrv_sent = "Start"+abbrv_sent+"End."
  punkt.train(abbrv_sent,finalize=False, verbose=False)
  # Finalize and outputs trained model.
  punkt.finalize_training(verbose=True)
  model = PunktSentenceTokenizer(punkt.get_params())
  with open(modelfile, mode='wb') as fout:
    pickle.dump(model, fout, protocol=pickle.HIGHEST_PROTOCOL)
  return model

但是请注意,句点检测对拉丁句号、问号和感叹号非常敏感 如果您要为不使用拉丁拼写法的其他语言训练 punkt 分词器,您需要以某种方式破解代码以使用适当的句子边界标点符号。 如果您使用 NLTK 的 punkt 实现,请编辑sent_end_chars变量。

除了使用nltk.tokenize.sent_tokenize()的“默认”英语标记器nltk.tokenize.sent_tokenize()还有可用的预训练模型。 它们是: https : //github.com/evandrix/nltk_data/tree/master/tokenizers/punkt

已编辑

请注意,预训练模型目前不可用,因为上面列出的nltk_data github nltk_data库已被删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM