栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

NLTK punkt的训练数据格式

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NLTK punkt的训练数据格式

嗯,是的,Punkt令牌生成器是神奇的无监督语句边界检测。作者的姓氏也很酷,Kiss and
Strunk(2006)
。这个想法是使用
NO注释 来训练句子边界检测器,因此输入将是 任何种类的纯文本 (只要编码是一致的)。

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

import nltk.tokenize.punktimport pickleimport precstokenizer = nltk.tokenize.punkt.PunktSentenceTokenizer()text = precs.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/
master / dltk / tokenize /
tokenizer.py:

def train_punktsent(trainfile, modelfile):  """ Trains an unsupervised NLTK punkt sentence tokenizer. """  punkt = PunktTrainer()  try:    with precs.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    precs.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()
。它们在这里:https
:
//github.com/evandrix/nltk_data/tree/master/tokenizers/punkt

已编辑

请注意,由于

nltk_data
上面列出的github存储库已被删除,因此预训练模型当前不可用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638439.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号