python训练词库_在Python中训练NGramModel

本文介绍了在Python中使用NLTK训练NGramModel的过程,包括建立词汇、计算Ngrams和从计数到分数的转换。提到KenLM可能是更快的选择,但NLTK适合教育和原型设计。训练分为三个步骤:1) 使用`build_vocabulary`创建词汇表;2) 使用`count_ngrams`计算Ngrams;3) 实现MLE、Lidstone或Laplace估算器进行概率估计。
摘要由CSDN通过智能技术生成

首先,正如您对问题的评论中所指出的,如果培训/运行速度对您来说是一个问题,KenLM可能是更好的选择.此时nltk.model主要用于教育/原型设计,但它并不快.

如果您仍然决定坚持使用NLTK,请继续阅读.我碰巧是模型分支中新的NgramModel代码的作者,我会尝试清楚地说明你可以测试代码并让我知道你的想法.由于旧的实现中的a lot of critical bugs,我们不得不对模块进行大修,我们仍在调整新的设置.

目前在this doctest file中描述了改进模块的预期用途.尽管如此,我将快速回顾工作流程的主要更改,因为它与旧版本有很大不同.

如果您对我们如何提出新工作流程感兴趣,请参阅this thread.

最重要的是要记住,训练ngram模型现在明确分为以下3个步骤.

1.建立词汇

当ngram模型遇到训练期间没有看到的单词时,旧实现中出现了一些最烦人的错误.解决这个问题的传统方法是在开始训练之前创建一个“已知”标记(单词)词汇表.

当你训练你的ngram模型时,你在词汇表中查找标记并在它们存在时增加它们的计数,否则增加计数器以获得特殊的UNKNOWN标记.我们的想法是,如果您在测试期间遇到看不见的令牌,您可以使用UNKNOWN的计数来估算其得分.

可以使用您训练的数据以外的数据创建此词汇表.例如,你的词汇可能来自Gigaword语料库,但你只训练你的模型华尔街日报.

使用nltk.model.build_vocabulary函数.

2.训练=计算Ngrams

你有没有想过当你“训练”一个ngram模型时究竟发生了什么?从本质上讲,培训模型实际上归结为简单地计算文本中的ngrams.当然,这还涉及将文本分解为ngrams并根据您在上一步中创建的词汇检查令牌.

适当命名的nltk.model.count_ngrams函数在您完成此任务时是您的朋友.它返回NgramCounter类的一个实例,它试图提供一个清晰的接口来访问/更新ngram计数.</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值