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

2024-04-30 03:29:24 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 文件函数标记模型单词pickle句子tokenize
1条回答
网友
1楼 · 发布于 2024-04-30 03:29:24

我不确定你是否能说分句比(单词)标记更难。但是标记化依赖于分句,因此分句中的错误会传播到标记化。因此,你需要可靠的分句,这样你就不必在标记化上弥补它。事实证明,一旦你有了很好的句子分割,标记化就可以很好地与正则表达式一起工作。在

为什么?–标记化(至少在拉丁语脚本语言中)的主要歧义之一是句点(“.”):它可以是句号(因此是它自己的一个标记)、缩写标记(属于该缩写标记)或其他特殊的东西(如URL的一部分、小数点等)。一旦分句器找出了第一个大小写(句号),标记器就可以集中精力处理剩下的部分。识别URL之类的东西正是您使用正则表达式的目的,不是吗?在

另一方面,分句器的主要工作是查找带有句点的缩写词。你可以手工创建一个列表,或者你可以在一个大的文本集合中训练它。好在,这是一种无监督的训练,你只需输入纯文本,拆分器就会收集缩写。直觉是:如果一个标记几乎总是以句点出现,那么它可能是一个缩写。在

相关问题 更多 >