为什么NLTK使用正则表达式进行单词标记化,但是对句子标记化进行训练?

时间:2016-12-22 04:59:37

标签: python nlp nltk

我在python中使用NLTK。我知道它在其单词标记化函数中使用正则表达式,例如TreebankWordTokenizer.tokenize(),但它使用训练模型(pickle文件)进行句子标记化。我不明白他们为什么不使用单词标记化培训?这是否意味着句子标记化是一项更难的任务?

1 个答案:

答案 0 :(得分:0)

我不确定你是否可以说句子分裂比(单词)标记化更难。但是,标记化取决于句子分裂,因此句子分裂中的错误将传播到标记化。因此,您希望有可靠的句子分割,这样您就不必在标记化中弥补它。事实证明,一旦你有一个好的句子分裂,令牌化与正则表达式相当好。

为什么? - 令牌化中的一个主要含糊之处(至少在拉丁语脚本语言中)是句点(“。”):它可以是句号(因此是它自己的标记),缩写标记(属于该缩写标记) ),或特殊的东西(如URL的一部分,小数部分,......)。一旦句子分割器找到了第一种情况(完全停止),令牌器就可以专注于其余的情况。识别URL这样的东西正是你使用正则表达式的原因,不是吗?

另一方面,句子分割器的主要工作是查找带句点的缩写。您可以手动创建一个列表 - 或者您可以在大文本集上训练它。好消息是,它是无监督的培训 - 您只需输入纯文本,分割器就会收集缩写。直觉是:如果一个令牌几乎总是以句点出现,那么它可能是一个缩写。