

# 研究前如何核对 TikTok 字幕用词

将一份已声明的 TikTok 字幕用词样本与人工核对过的音频参照进行比较，在研究开始前找出用词错误和意义错误。

## 原生文稿设置与对照

Actor 是收集网页数据的托管程序，Task 是已保存的输入配置。当前 Task 示例输入包含一个 startUrls 数组，其中有 1 条 Hank Green 视频 URL `https://www.tiktok.com/@hankgreen1/video/7047596209028074758` ，以及一个空的 preferredLanguages 列表 `[]`。请把这整个示例列表替换为你打算使用的那 1 个已知公开视频地址，并写入 startUrls。仅当你的研究有已声明的英语语言规则时，才使用 preferredLanguages `["en"]`。使用空列表 `[]`，以选择任意语言中的第一条公开字幕轨。先运行这一次单视频试点，以验证你的目标来源上存在公开字幕。语义错误是指会影响你的研究编码的意义变化。

TikTok Transcript 当前公开版本 0.1.36 接受的 startUrls 可包含 1 到 100 个已知公开视频 URL、短链接或数字视频 ID。它不搜索个人主页、关键词或声音页面。preferredLanguages 字段按优先顺序选择已有的公开字幕轨。空列表使用第一条公开字幕轨。它不翻译，不转写尚未采集的音频，不收集评论，也不推断内容编码。

每一条已提交的输入对应一行数据集，包括不计费的状态结果。确切字段为 inputIndex、inputUrl、videoId、videoUrl、authorHandle、durationSeconds、languageCode、text，以及包含 startSeconds、endSeconds 和 text 的 segments，另加 status、statusReason、isBillable 和 scrapedAt。请直接使用返回的 startSeconds 和 endSeconds。把视频 ID 保留为字符串。字幕语言可以使用地区值，例如 eng-US。带有失败状态的 null 或空文稿并不等于口播中的静音。

状态包括 succeeded、no_public_captions、language_unavailable、duplicate_input、not_tiktok、invalid_input、unsupported_url、video_unavailable、not_public、blocked_or_challenged，以及提取失败或字幕失败。成功要求 text 非空。isBillable 为 True 表示一次成功的原生文稿结果事件。其余行仍然是证据。平台用量与结果事件是分开的，因此不要把整次运行称为免费。运行核算字段包括 inputsReceived、resultRows、billableTranscriptRows、nonBillableResultRows、duplicateVideosSkipped 和 statusCounts。

这一条英语单视频对照已成功，并返回了所请求的精确视频 ID、非空 text，以及 12 个符合已核对时间结构的 segments。这证明的是该来源上的一条公开字幕路径，而不是所有视频、完美的口播用词准确度或编码有效性。请开始你自己的单视频试点；只有英语是你已声明的研究语言时，才将 preferredLanguages 设为 en。

## 完整核对方法

1. 先说明你的研究需要从这些词语中得到什么，例如某一条特定指示、某一项主张或某一处否定。在已声明的抽样规则、语言和时间窗口下选择已知视频。缺失的字幕不能得到零错误分。
2. 保持原生字幕文本、时间标记、来源身份和时间不变。从一条成功且非空的字幕轨开始。记录 languageCode 和 status。只比较一段已经说明、且其音频可以清楚复查的区间。这是对语音用词的核对，不是对完整视频内容准确度的核对。
3. 收听所选区间的视频音频，并在不查看字幕的情况下写下人工参照文稿。重新检查任何不确定的词语，或请第二位复查者一同收听。如果音频不清楚或无法听清，请按你已声明的规则标出这些词语并移除它们，不要猜测。人工参照文稿是一份已经核对的比较记录，但人工复查者仍然可能出错。
4. 把文本规范化声明为评分前对工作文本所做的明确且标准化的改动。将全部文本转为小写，去除标准标点，并按空格拆成普通词语单元。在工作文本中保留数字、not 这类否定词、词语的原样形式，以及 um 或 ah 这类填充词。不要去除词尾，也不要把词语转换成词典中的词根形式。将原始文本与工作文本并排保留，以便追踪每一处改动。
5. 按顺序将参照词语与字幕词语对齐。替换是指对齐位置上的词语不同。删除是指参照中有而字幕中没有的词语。插入是指字幕中有而参照中没有的词语。记录确切的对齐行。
6. 将 N 定义为参照词语数，将 S、D 和 I 定义为替换、删除和插入的对齐错误数。词语错误比等于（S 加 D 加 I）除以 N。乘以 100 得到百分比。N 必须为正数。插入可以使该比值超过 100%。
7. 对于合并样本，用总错误数除以总参照词语数，得到汇总词语比。同时保留每个视频的结果。把缺失或未评分的样本分开显示。方便样本不能确立所有视频的准确度。
8. 为否定、数字、名称、单位、说话人归属，或影响研究编码的遗漏添加语义错误笔记。一个词语的错误就可能颠倒意义。决定是修正一份单独的分析副本、排除或复查一段文字，还是使用人工编码。保留修正、时间、来源和出处。不要覆盖原始字幕。

## 演算示例与对齐

全部评分都是人工虚构的，并不是一次已经执行的 NIST 运行。

在虚构对齐 A 中，5 个词的参照文本是 "i water the red plant"，字幕文本是 "i water a red plan"。

| 参照词语 | 字幕词语 | 错误类型 |
| --- | --- | --- |
| i | i | 正确 |
| water | water | 正确 |
| the | a | 替换 |
| red | red | 正确 |
| plant | plan | 替换 |

虚构对齐 A 中，S 等于 2，D 等于 0，I 等于 0。词语错误比是 2 除以 5，等于 40%。

在虚构对齐 B 中，10 个词的参照文本是 "we do not add water until the tray is level"，字幕文本是 "we do add water until the tray is level"。

| 参照词语 | 字幕词语 | 错误类型 |
| --- | --- | --- |
| we | we | 正确 |
| do | do | 正确 |
| not | [已删除] | 删除 |
| add | add | 正确 |
| water | water | 正确 |
| until | until | 正确 |
| the | the | 正确 |
| tray | tray | 正确 |
| is | is | 正确 |
| level | level | 正确 |

虚构对齐 B 中，S 等于 0，D 等于 1，I 等于 0，错误位于词语 not。每一个其他参照词语都各自对齐一次。词语错误比是 1 除以 10，等于 10%。

尽管词语错误比较低，这一次删除仍然颠倒了该指示。请记录一处关键否定错误，并继续将该段标为待复查。

这些视频错误百分比的未加权平均数是 (40+10)/2=25%。跨两段视频的汇总词语错误比是 (2+1)/(5+10)=3/15=20%。未加权平均数得到 25%，因为它不论长短，对每个视频给予相等权重。汇总计算得到 20%，因为它按整个样本的参照词语总数对每一处错误加权。

| 样本 | 参照 N | 替换 | 删除 | 插入 | 词语错误比 | 语义笔记 |
| --- | --- | --- | --- | --- | --- | --- |
| 虚构 A | 5 | 2 | 0 | 0 | 40% | 名词与冠词已改变 |
| 虚构 B | 10 | 0 | 1 | 0 | 10% | 关键否定已被删除 |
| 虚构 C | 1 | 0 | 0 | 4 | 400% | 增加了额外词语 |
| 失败行 | 未知 | 未知 | 未知 | 未知 | 未评分 | 缺失字幕轨 |
| 汇总 A 加 B | 15 | 2 | 1 | 0 | 20% | 合并词语总数 |

示例 C 的参照是 "water"（N 等于 1），字幕是 "please add clean water now"，有 0 次替换、0 次删除和 4 次插入，即 4 除以 1，词语错误比为 400%。一条失败的字幕行具有未知的错误计数，并保持未评分，这与 0% 错误不同。

## 下一步

制作一份独立的音频参照，对照字幕文本检查它的词语对齐，并在[将此文本用于你的研究](/zh-Hans/articles/%E5%87%86%E5%A4%87tiktok%E5%AD%97%E5%B9%95%E6%95%B0%E6%8D%AE%E7%94%A8%E4%BA%8E%E5%86%85%E5%AE%B9%E5%88%86%E6%9E%90/)之前，记录用词错误和对研究至关重要的意义错误。请使用 [TikTok Transcript API Dataset Task](https://apify.com/chronometrica/tiktok-transcript-scraper/examples/tiktok-transcript-api-dataset) 中的预设配置，通过 [TikTok Transcript Scraper Actor](https://apify.com/chronometrica/tiktok-transcript-scraper) 运行文稿采集。

## 来源和延伸阅读

- [NIST SCTK 词语错误评分文档：](https://github.com/usnistgov/SCTK/blob/master/doc/sclite.htm#word-error-scoring)
- [NIST SCTK 输出示例：](https://github.com/usnistgov/SCTK/blob/master/doc/outputs.htm)
- [NIST 语音识别工具索引：](https://www.nist.gov/itl/tted/mltg/tools)
- [公开数据集示例：](https://apify.com/chronometrica/tiktok-transcript-scraper/examples/tiktok-transcript-api-dataset)