regex - Python 3 中最快的标记化函数是什么?

标签 regex python-3.x nltk tokenize textblob

在Python 3中,我们可以使用re.compile()、nltk.tokenize()和TextBlob.words()来标记给定的文本。我认为可能还有其他方法,但我不知道。

以下哪种方法或其他未提及的方法对给定文本进行标记化速度最快?

提前谢谢您。

最佳答案

计算每个 tokenize 函数开始和结束之间的时间戳差异后,我得出以下观察结果:

1) 正则表达式操作是最快的。代码如下:

import re
WORD = re.compile(r'\w+')
def regTokenize(text):
    words = WORD.findall(text)
    return words

标记 100,000 个简单的单行字符串所需的时间为 0.843757 秒。

2) NLTK word_tokenize(text) 是第二个。代码如下:

import nltk
def nltkTokenize(text):
    words = nltk.word_tokenize(text)
    return words

标记 100,000 个简单的单行字符串所需的时间为 18.869182 秒。

3) TextBlob.words 是最慢的。代码如下:

from textblob import TextBlob as tb
def blobTokenize(text):
    words = tb(text).words
    return words

标记 100,000 个简单的单行字符串所需的时间为 34.310102 秒。

  • 正则表达式操作速度极快。
  • 但是,NLTK 也会对字符进行标记,因此它会返回更大的列表。
  • TextBlob 的速度几乎是 NLTK 的两倍,但仅存储来自 标记化列表。

如果其他人也想知道同样的事情,这就是答案。

关于regex - Python 3 中最快的标记化函数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48691087/

相关文章:

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

r - 如何使用或不使用文档术语矩阵来对术语频率数据进行制表?

python - 识别文本中的双词城市 ('New York' )

regex - 带有索引字段的 MongoDB 正则表达式

python 3 typing varadic "apply"样式定义

python - 从关闭的文件中返回生成器 | csv 阅读器不返回生成器作为 openpyxl?

python - TypeError : 'function' object is not iterable' Python 3

regex - Scala:字符串模式匹配和拆分

java - 如何在java中使用正则表达式匹配结束括号?

java - 我需要升级我的一个正则表达式