python - 哪个分词器更适合与 nltk 一起使用

标签 python nltk tokenize

我已经开始学习 nltk 并关注 this教程。首先,我们使用 sent_tokenize 来使用内置分词器,然后我们使用 PunktSentenceTokenizer。本教程提到 PunktSentenceTokenizer 能够进行无监督机器学习。

那么这是否意味着它比默认的更好?或者各种tokenizers之间比较的标准是什么?

最佳答案

查看 source code对于 sent_tokenize() 显示该方法当前使用预训练的 punkt tokenizer,因此它等同于 PunktSentenceTokenizer。您是否需要重新训练分词器取决于您使用的文本的性质。如果它不是太奇特的东西,比如报纸文章,那么您可能会发现预训练的分词器就足够了。分词归结为分类任务,因此可以通过对标记数据使用典型指标(如精度、召回率、f 分数等)来比较不同的分词器。

punkt tokenizer 基于以下论文中发表的工作:

http://www.mitpressjournals.org/doi/abs/10.1162/coli.2006.32.4.485#.V2ouLXUrLeQ

它基本上是一种基于启发式的方法,旨在消除句子边界与缩写的歧义——这是句子标记化的祸根。称其为启发式方法并不意味着贬低。我以前使用过内置的句子分词器,它对我所做的工作很好,当然,我的任务并不真正依赖于准确的句子分词。或者更确切地说,我能够在无关紧要的地方投入足够的数据。

这是一个关于 SO 的问题示例,其中用户发现缺少预训练的分词器,需要训练一个新分词器:

How to tweak the NLTK sentence tokenizer

有问题的文本是 Moby Dick,奇怪的句子结构使分词器出错。您可能需要训练自己的分词器的一些示例是社交媒体(例如推特)或技术文献,其中包含许多预训练分词器未遇到的奇怪缩写。

关于python - 哪个分词器更适合与 nltk 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37958781/

相关文章:

python - 在 NLTK 中导入 WordNet

python - 如何在 Heroku 中安装 NLTK 模块

python - 使用 nltk 计算 pandas Dataframe 中最流行的 'two words combination' 希伯来语单词

C++ 数学分词器/解析器错误

C++ 将输入分离到各种变量中

python - 如何在 matplotlib 中将 RGBA 图像叠加在 RGB 图像上

python - 如何在kubernetes集群中使用作业队列

c - 将 strtok 限制为仅 3 个标记

python - 比较两个系列时,如何根据一个系列进行过滤?

python没有运行多个版本