当前位置:首页>Word>WordPiece 的“前世今生”

WordPiece 的“前世今生”

  • 2026-04-05 16:28:05
WordPiece 的“前世今生”

引言

我们在上一篇《由浅入深了解 NLP 中的 Tokenizer》 中提到 Subword-based 中的 WordPiece 算法。

这篇来详细聊下 WordPiece 词表训练算法。

💡 为什么选择 WordPiece:

1、 WordPiece 的训练与分词过程以字符为基本单位,且显式区分词首与词内子词,使得子词合并过程、结果更适合人类阅读和理解习惯。

2、 在理解了 WordPiece 之后,再去理解缺乏显式子词边界语义的 BPE,以及以 byte 作为基本单位的 Byte-level BPE,会明显降低整体理解成本。

本文将讲述:

  • 1、WordPiece 的“前世”

  • 2、WordPiece 的“今生”(huggingface-tokenizers 中的 WordPiece 实现)

WordPiece 的“前世”

最早提出并明确命名 WordPiece 是来自 Google 2012年的一篇论文

《Japanese And Korean Voice Search》

这是一篇关于语音识别的论文。它最早提出了 WordPieceModel 概念,是现代 WordPiece 的鼻祖。

不要被论文的标题迷惑了,Voice Search 并不是直接使用声音搜索,而是 声音 -> 文本 -> 搜索

声音 -> 文本 现在通常称为自动语音识别 (ASR,Automatic Speech Recognition)。

有别于神经网络实现的 ASR,在十几年前,是传统混合式 ASR,它主要有几个步骤:

  • 1、声学模型:分析声学特征,输出音素 (phoneme/语音的最小单位) 的概率

  • 2、发音字典 (lexicon) :这些音素可能组成什么词

  • 3、语言模型 (Language Model):根据上下文和可能组成的词,组合成合理的句子

💡 在 ASR 系统中,lexicon 可以看作“一对多”映射:一个音素序列可能对应多个文本形式,从而为解码提供候选。

例如:

chén mò -> 沉默 、沉没

注意:

为了方便理解本文都使用拼音代替音素,实际上音素是另一套独立、完整的符号体系。

Google 语音搜索系统在把语言从英语扩展到日文、韩文时碰到了一些问题。

我们这里只关注其中一个问题,就是关于发音字典 (lexicon) 的问题。

由于这个发音词典的存在,文本必须被切分。

ℹ️ 如果不切分,这个发音字典里面都是完整句子,而句子是无法穷举的。

词组成句子的数量几乎是无限的

在英语中词语之间由空格天然分隔,且词级多音现象较少,因此可以直接构建基于单词的发音词典。

例如:today is cloudy

按空格分:today / is / cloudy

而日文、韩文以及中文没有明确的词语分界线且有大量的多音字、多形字。

方法一:按字分

例如:今天天气真好

按字分词: /  /  /  /  / 

看似按照字分没有问题,但是日语中存在大量的“一字多音”、“一音多字”。

ℹ️ 我们用中文举例:

读音 yì 对应的常见汉字有:义、意、易、艺、译、异、议、益、亿、翼、忆、抑…

“行” 对应的读音有:xíng、háng

但是事实上日文的情况更严重

举个简单的例子:5 个字的句子,平均每个字有 3 个发音,那就有 5³ = 125 种可能。

一般来说可以通过剪枝减少路径,但是发音字典还是需要保留所有可能性。

论文中提到一个指标,在日文中如果按字分,平均需要尝试十次以上的发音才能找到正确结果。

💡 按词切分在日文、韩文、中文时显得有些“水土不服”。

方法二:按照高频字符串分

论文中还提到一个方法就是对网页里“经常一起出现的字符串”当词。

例如抓去一批网页后统计出高频词做成发音字典:

rén gōng zhì néng -> 人工智能shēn dù xué xí -> 深度学习jī qì xué xí -> 机器学习

这时用户说了“人工智能大模型应用”发音字典中还是没有,所以这种方式往往会产生大量未登录词(OOV),并且强烈依赖语言和领域。

💡 按照高频字符串分在小规模、单领域系统中是可行的,但在多领域的搜索场景下,词表维护成本和 OOV 问题会迅速失控,因此在工程上难以扩展。

方法三:WordPieceModel

论文中提出了 WordPieceModel 技术,也是 WordPiece 的雏形。

  • 大致过程:

    1、使用基本 Unicode 字符初始化词单元表(日语包括汉字、平假名、片假名,韩语包括谚文和 ASCII),总数约为日语 22000 个,韩语 11000 个。

    2、使用该词表在训练数据上构建语言模型。

    3、通过将当前词表中的两个单元合并,生成一个新词单元,选择能最大提升训练数据似然的新单元。

    4、重复步骤 2,直到达到预定义的词表规模或似然增益低于阈值。

  • 详解:

    上面的描述非常宏观,我们通过一个例子来详细理解下。

    例如有训练语料:

    "今天杭州天气好""北京天气也好"

    1、先根据语料初始化一个单字符的词表(语料中所有字的去重集合):

    "今""天""气""好""也""杭""州""北""京"

    2、统计词表中 token 的出现的次数:

    token
    次数
    1
    3
    2
    2
    1
    1
    1
    1
    1

    3、根据词表生成相邻子词表(bigram)并统计次数:

    仔细思考这个统计过程,在后面也会用到

    4、计算相邻子词得分:

    举个例子:

前 token
后 token
次数(count)
分数(score)
1
1
1
1
1
0.5
1
0.5
1
0.333
1
0.333
1
0.333
2
0.333
1
0.333
1
0.25

根据上面的表很明显应该先合并成杭州、北京,并添加的词表中,重复这个过程。

💡 这里需要注意的是合并后的“杭州” 加入词表后,原来的“杭”,“州”是不删除的。词表在训练过程中是只会增大的,也就是初始化的词表一定是最终词表的一个子集。

这只是第一轮,让我们以轮次的角度再看下整个过程:

ℹ️ 这样仅计算得分就可以逐渐从大量日、韩、中语料中合并出词语,得到一个大小适当、不容易OOV的词表

⚠️ 注意

  • 论文中仅提到了大致过程及 WordPieceModel 名称,并没有任何的伪代码或者公式。

  • Google 虽然开源了基于 WordPiece 训练完成的词表(例如:BERT模型中词表),却从未开源其训练算法。

  • 以上算法均是开源社区根据后来公开的资料文献推测的。

到这里,我们已经看到 WordPiece 的“前世”是如何为日语、韩语、汉语等没有空格分词的语言解决 音素->文本 发音字典 (lexicon) 的问题。

而随着 Transformer 大幅推高文本语言模型的能力,对文本分词在泛化能力、词表规模与建模稳定性上的要求也大幅提高。这种要求不仅体现在中文、日文等语言上,也体现在英语等拉丁语系语言中。

WordPiece 又有了用武之地。这就是它的“今生”。

WordPiece 的“今生”

英语中,一个词往往会因为时态、单复数、派生关系而产生大量形态变化:

tokentokenstokenizertokenizingtokenization

如果将这些形式全部作为独立的词条加入词表,不仅会导致词表规模迅速膨胀,还会使得模型难以在不同词形之间共享统计信息(长尾)。

为了解决这一问题,语言模型开始转向子词级(subword-level)建模: 不再将“词”视为最小不可分割的单位,而是将其拆解为在多种上下文中反复出现的、更小的片段。

“##”代表不是首词

这样的拆分方式是不是很眼熟,其实就是一个没有空格作为词界的字符串,需要拆分。

这和中文的拆分如出一辙。

WordPiece 的“今生”实现

“今生”的 WordPiece 以 HuggingFace 的 tokenizer 项目中的实现为参考。

💡 这是因为:

1、Google 并没有公开 WordPiece 训练算法/代码,仅是一个思想,因此没有一个标准的参考。

2、HuggingFace 的算法相较于 Google 论文中的算法效率更高,更具工程价值。

HuggingFace 的 WordPiece 总体思路和论文中一致。其不同之处在于:

  • 首先:对于词内子词增加后缀指示符(suffix indicator),例如BERT中的“##”。

  • 其次:合并相邻词的选择方法不同(前者根据出现次数,后者根据score)。

后缀指示符的作用

后缀指示符(如 BERT 中的 ##)的核心作用,是在 token 中显式编码子词的词边界信息。可以在解码时还原词信息。

当然还有其他作用,例如减少语义歧义、减少非法分词路径提高效率等。

看一个例子:

  • 假设有一个词表没有使用后缀指示符:

    当模型输出 token id 为 [0,1],解码时就无法区分是 "football" 还是 "foot","ball"。

  • 假设使用了后缀指示符的词表:

    当模型输出[0,1]就是"foot","ball",如果是[0,2]则是"football"

💡

1、这里没有使用中文举例子,这是因为中文不依赖空格做分隔,解码时不需要恢复空格信息。也就是说对于中文来说后缀指示符不是必须的

2、bert-base-chinese 模型的词表对中文做了特殊处理,是直接按字拆分的也就是 character-based,对于其他语言使用的是 WordPiece,这更多是基于工程上的考虑。

3、WordPiece 本身是语言无关的,并未对中文进行特殊处理。但是为了方便理解,后文统一使用英文示例进行说明。

大致过程:

1、先初始化一个词表,并对非首字增加后缀指示符(suffix indicator)

2、然后合并出现次数最多的相邻词

3、把合并的词添加进词表

4、重复2、3,直到到达预定的词表大小

详细过程:

有语料:

He played and she is playingThe player wins

1、初始化一个词表:

分词并添加后缀指示符:

  He       → H ##e  played   → p ##l ##a ##y ##e ##d  and      → a ##n ##d  she      → s ##h ##e  is       → i ##s  playing  → p ##l ##a ##y ##i ##n ##g  The      → T ##h ##e  player   → p ##l ##a ##y ##e ##r  wins     → w ##i ##n ##s   

对分词去重得到初始词表:

"H""##e""p""##l""##a""##y""##e""##d""a""##n""s","##h""i""##s","p","##i","##n","##g","T""##h""##r""w"

2、统计相邻词出现的次数:

这一步,可以停下来仔细思考下统计过程

前 token
后 token
次数(count)
H
##e
1
p
##l
3
##l
##a
3
##a
##y
3
##y
##e
2
##e
##d
1
a
##n
1
##n
##d
1
s
##h
1
##h
##e
2
i
##s
1
##y
##i
1
##i
##n
1
##n
##g
1
T
##h
1
##e
##r
1
w
##i
1
##i
##n
1
##n
##s
1

3、合并次数多的相邻词:

这里和论文中不一样,不需要计算score,仅合并出现次数多的相邻词:

"p"   + "##l" → "pl""##l" + "##a" → "##la""##a" + "##y" → "##ay"

把新合并的词加入原词表,并重新统计后再词执行合并。

看下整个过程:

希望对你有帮助

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-10 02:48:45 HTTP/2.0 GET : https://h.sjds.net/a/463790.html
  2. 运行时间 : 0.107326s [ 吞吐率:9.32req/s ] 内存消耗:4,370.77kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=da79ce2f3d9dbb21be05c7b76e50de42
  1. /yingpanguazai/ssd/ssd1/www/h.sjds.net/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/h.sjds.net/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/h.sjds.net/runtime/temp/ad153693ed39fba6d1bda2fe72512cde.php ( 12.06 KB )
  140. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000493s ] mysql:host=127.0.0.1;port=3306;dbname=h_sjds;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000645s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000284s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000286s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000519s ]
  6. SELECT * FROM `set` [ RunTime:0.000216s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000541s ]
  8. SELECT * FROM `article` WHERE `id` = 463790 LIMIT 1 [ RunTime:0.000522s ]
  9. UPDATE `article` SET `lasttime` = 1775760525 WHERE `id` = 463790 [ RunTime:0.009641s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000225s ]
  11. SELECT * FROM `article` WHERE `id` < 463790 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000388s ]
  12. SELECT * FROM `article` WHERE `id` > 463790 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000611s ]
  13. SELECT * FROM `article` WHERE `id` < 463790 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000675s ]
  14. SELECT * FROM `article` WHERE `id` < 463790 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002369s ]
  15. SELECT * FROM `article` WHERE `id` < 463790 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005041s ]
0.108821s