

# 如何检查单个 Reddit 帖是否主导你的研究结果

先按评论、账号、帖子和社区计数同一主题，然后去掉最大的帖子，再计数一次。选择每项计数，使它对应你的客户问题。评论计数不是客户占比。它不是产品排名。

主题是你在计数之前命名的那一个客户想法。评论是帖子下的一条公开回复。账号是一行上的公开名称。账号不是已证实的个人、买家或私人群体。帖子是一条来源帖。社区是该帖所属的 Reddit 群组。你根据已知的帖子地址补上社区。采集程序不会返回它。

一条很长的帖子可以让一个主题看起来很常见。少数账号可能写下大部分“是”评论。这四项计数能显示这种差别。去掉最大的帖子，可以看出第二条帖子里是否仍有该主题。

人们会在公开场合询问客户研究做法。一篇[产品营销帖](https://www.reddit.com/r/ProductMarketing/comments/1liklfb/best_tactics_for_customer_research/)询问做法。一篇[SaaS 帖](https://www.reddit.com/r/SaaS/comments/1tb26ri/customer_research_on_reddit/)表明，在 Reddit 上做研究很难。这些帖子显示一种需求。它们没有命名这个计数单位。它们没有证明这项检查。它们没有测量一个市场。

## 计数之前先读各行

Actor 是托管的数据采集程序。本方法使用 [Reddit Comments Actor](https://apify.com/chronometrica/reddit-comments-scraper)，公开构建 1.0.7。Task 是已保存的输入预设。[客户语言研究 Task](https://apify.com/chronometrica/reddit-comments-scraper/examples/reddit-customer-language-research) 只是一个起点。它不能证明这些计数会自行发生。Actor 保存来源行。本方法中的每一次计数都由你完成。

Actor 接受 `postUrls`，用于已知的公开帖子。你可以发送 1 到 50 个帖子 URL。`maxCommentsPerPost` 是单个帖子的上限。上限是你要求 Actor 从该帖保存的评论数量的最大值。上限可以是 1 到 500。默认上限是 100。已保存的 Task 使用 250。第一次检查时，使用一个帖子，并选择上限 3。只在以后再增加帖子。让每个上限都处于同样的限制之内。

已保存的 Task 指向一条示例帖。用你自己的已知公开 URL 替换该示例。

```json
{
  "postUrls": [
    "https://www.reddit.com/r/LocalLLaMA/comments/1ui241x/the_number_1_public_enemy_of_opensource/"
  ],
  "maxCommentsPerPost": 250
}
```

计数之前先读各行

一条已保存的行，是来源帖下的一条公开评论。你需要 `postId`、`canonicalPostUrl`、`commentId`、`authorName`、`body`、`status` 和 `observedAt`。`canonicalPostUrl` 是来源帖的标准公开地址。正文是评论文本。`observedAt` 是看到该行的时间。数据集中的评论状态只有 ok、deleted 或 removed。运行结果 partial 或 failed 不是评论状态。

正文和 `authorName` 可以为空，也可以是占位。文本 [deleted] 是占位。它不是每一个缺失名称所共用的一个账号。仅当 `authorName` 不为空且不是 [deleted] 时，才把它用作账号键。

当前对一条已知的 AskMarketing 帖做了一次对照检查，范围只有这一条已知帖。这次检查返回了 3 个与来源帖匹配的不同评论 ID。这 3 条的正文中都有文本。另一次单独读取发现 3 个不同的、非空公开作者名。这些名称不保留在这里。全部 3 行上的 `parentId` 和 depth 都是 null。`hiddenBranchesRemaining` 为 null。本方法不需要回复树。null 父项不是回复链接。不要编造一个。缺失的父项也不能告诉你一个人是谁。

OUTPUT 块可以包含 `commentsSaved`、`duplicatesSkipped`、`hiddenBranchesRemaining`、`completionReason`、`status`、`isComplete` 和 `inputResults`。每个输入也可以显示 `commentsFound`、`commentsSaved`、`status` 和 `reason`。在这次 3 行运行中，`isComplete` 为 true，但 status 为 partial。`isComplete` 表示已保存的工作已经完成。partial 表示 Actor 没有保存完整的帖子。一次已完成的运行并不是该帖上的每一条评论。这次运行受到上限限制。它没有测量许多帖子。它没有测量一个主题。输出没有不同作者计数器。你要自己计数账号。

这个 Actor 不返回 `requestedSubreddit` 或 `matchedSubreddit`。另一个 Actor 会返回这些字段。如果你添加社区列，请从已知的 `canonicalPostUrl`，或从你核对过的来源字段复制。写明它来自哪里。该列是你的备注。Actor 不添加主题标签。它不对产品排名。它不会替你建立均衡样本。

## 执行这八项操作

1. 命名一个主题，以及你将使用的帖子。写下哪些文本在该主题之内。写下哪些文本在该主题之外。在计数之前做这些。每条已保存的行是一条已记录评论。同一账号可以写许多评论。许多评论可以位于同一帖子中。

回复很多的帖子可以看起来像一个很大的客户群体。它可能是一次很长的谈话。你的纳入规则和排除规则，用来阻止你在看到最大的帖子之后，再改这个主题包含哪些文本、排除哪些文本。

1. 先采集一条已知帖子。阅读每个评论 ID、正文、状态、作者字段和 OUTPUT 块。可编码评论带有你可以阅读并判断的正文文本。把 deleted、removed 和缺失文本排除在主题计数之外。仍要报告你看到了多少这样的行。缺失正文并不表示主题不存在。它表示你不能给该行编码。选择一个固定上限。保留来源中的每一个停止原因。上限是你选择的限制。它不是完整谈话。

先在一个 URL 上把 `maxCommentsPerPost` 设为 3。如果 OUTPUT 的 status 是 partial，就照实说明。不要把一次已完成的运行称为完整总体。这里的总体是该帖上的每一条评论。如果以后添加帖子，把 `postUrls` 保持在 50 或以下。把每个上限保持在 1 到 500。

1. 把每个评论 ID 与其来源帖及其 `observedAt` 时间一起保留。如果两行用词相同但 ID 不同，不要合并它们。如果同一个 ID 在不同行之间冲突，就复查这两行。不要只凭用词挑选其中一行。把你无法解决的缺失 ID 单独作为一组来计数。已知账号键必须是不为空、且不是 [deleted] 的 `authorName`。把未知名称和占位留在已知账号集合之外。不要给所有这些行一个共用账号。
2. 对可编码文本[手工为主题编码](/zh-Hans/articles/%E6%A3%80%E6%9F%A5%E4%B8%A4%E4%BD%8Dreddit%E8%AF%84%E8%AE%BA%E7%BC%96%E7%A0%81%E5%91%98%E7%9A%84%E4%B8%80%E8%87%B4%E6%80%A7/)。保存该编码、编码者姓名、一个版本和一条简短上下文备注。对每条可编码评论使用“是”或“否”。“是”表示主题存在。“否”表示文本可读且主题不存在。在本方法中，肯定表示“是”。它不表示作者高兴。否定表示“否”。它不表示作者愤怒。不要使用自动情感工具。这里的情感是指工具对感受的猜测。Actor 不会为主题编码。如果你需要回复上下文，就打开公开帖子并阅读它。null 的 `parentId` 不是上下文。
3. 从“是”行建立四个集合。评论集合把每个肯定评论 ID 各收录一次。账号集合收录每个至少有一条“是”评论的已知账号。帖子集合收录每个至少有一条“是”评论的帖子。社区集合收录每个至少有一条“是”帖子的社区。在各自的集合内，每个值只计一次。来自一个账号的三条评论是一个账号。在本方法中，一个帖子属于一个社区。这四个集合回答四个问题。它们不估计买家。它们不计沉默读者。
4. 为每个集合写下分子和分母。分子是具有该主题的单位数量。分母是你用来做除数的那一组。评论分母是你所选样本中的可编码评论。账号分母是按你的规则至少有一条可编码评论的已知账号。它不是每一个注册用户。在该分数旁边报告未知账号行。报告你使用的上限。帖子分母是你选定的已知帖子。社区分母是你选定的已知社区。这两个分母都不是整个 Reddit。把每一项计划来源计数与每一项可用已观察计数分开保留。计划计数是你选择阅读的帖子数或社区数。可用已观察计数是其中你已取回并且能够编码的数量。如果你不把这些计数分开，就把每个选定分母标为已观察肯定覆盖，并显示每一项未知。已观察肯定覆盖只计数你能够阅读并编码的单位。失败的帖子是未解决覆盖。不可用的帖子是未解决覆盖。完全不可编码的帖子是未解决覆盖。失败的社区是未解决覆盖。不可用的社区是未解决覆盖。完全不可编码的社区是未解决覆盖。未解决覆盖不是真阴性。真阴性表示你看到了该单位，并且主题不存在。一条未完整采集的帖子，可能会漏掉一部分文本。如果取回的文本中没有该主题，则在取回的样本中没有观察到该主题。该结果并不表明该主题不存在。

很高的评论比例可能来自一个发帖许多次的账号。账号比例可以看起来更小，因为该名称只计一次。很高的帖子比例仍可能位于一个社区之内。把四个比例放在一起阅读。

1. 按选定帖子所持有的“是”评论数量为它们排序。只去掉排在最前的帖子，然后再次计数全部四个单位。这是留一帖检查。它显示你的结论是否依赖那一个帖子。它不是显著性检验。显著性检验要问的是，是否仅凭随机变动就能造成这个差距。这项检查不做显著性检验。这并不表示被去掉的帖子是不良数据。比较之后，把该帖放回最终采集到的记录集合。加上一条简短的影响备注，说明改变了什么。

分别比较每个单位。当一个帖子持有大部分“是”行时，评论占比可以大幅下降。账号占比的变动可以不同，因为重复发帖已经算作一个账号。帖子占比会在分子和分母中都失去该帖。当该社区中另一条选定帖子仍有该主题时，社区占比可以保持不变。

1. 公布一张证据分布表和一条简短结论。证据分布是并排的四个比例。说明有多少评论、账号、帖子和社区带有该主题。说明去掉最前的帖子之后还剩下什么。只存在于一个帖子中的主题，仍可以从用词中让你学到东西。那是定性证据。它的广度弱。广度是有多少彼此分开的来源相一致。用该结果来计划更多研究。不要声称市场规模。不要声称客户中的多数。[不要用这些比例给功能排名](/zh-Hans/articles/facebook%E5%8A%9F%E8%83%BD%E8%AF%B7%E6%B1%82%E8%BD%AC%E5%8C%96%E4%B8%BA%E4%BA%A7%E5%93%81%E4%BC%98%E5%85%88%E7%BA%A7/)。

## 一份虚构的九条评论底账

下面各表是原创虚构。它们用来讲授这套算术。它们不是 Actor 结果。它们不是那份 3 行样本。该样本没有主题编码。这些评论 ID 是虚构标签。这份底账不显示 Actor 上限。在真实运行中，报告你的上限以及任何 partial 停止。

这份虚构有九条可编码评论。它们来自三个已知帖子：T1、T2 和 T3。T1 和 T2 位于社区 Q1。T3 位于社区 Q2。肯定表示主题存在。否定表示在你能阅读的文本上，主题不存在。

| 行 | 评论 ID | 帖子 | 社区 | 账号 | 正文状态 | 主题 |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | C1 | T1 | Q1 | A | 可编码 | 肯定 |
| 2 | C2 | T1 | Q1 | A | 可编码 | 肯定 |
| 3 | C3 | T1 | Q1 | A | 可编码 | 肯定 |
| 4 | C4 | T1 | Q1 | B | 可编码 | 肯定 |
| 5 | C5 | T1 | Q1 | C | 可编码 | 肯定 |
| 6 | C6 | T2 | Q1 | A | 可编码 | 肯定 |
| 7 | C7 | T2 | Q1 | D | 可编码 | 否定 |
| 8 | C8 | T3 | Q2 | E | 可编码 | 否定 |
| 9 | C9 | T3 | Q2 | F | 可编码 | 否定 |

还有一行只用于可用性。它在这九条可编码评论之外。

| 行 | 评论 ID | 帖子 | 社区 | 账号 | 正文状态 | 主题 |
| --- | --- | --- | --- | --- | --- | --- |
| 10 | R1 | 不在各集合中 | 不在各集合中 | 未知 | removed | 未编码 |

R1 不是第十条可编码评论。它不是一条否定。未知作者不是第七个已知账号。不要把 [deleted] 当作共用键。这份虚构没有把 R1 放在 T1、T2 或 T3 上。缺失正文并不表示主题不存在。报告一行正文为 removed、账号未知的记录。只把它保留在可用性计数中。

已知账号名称空间只有 A、B、C、D、E 和 F。这里的名称空间，是允许进入账号计数的名称集合。A 的重复仍是一个名称。R1 不增加任何名称。

完整评论集合：C1、C2、C3、C4、C5、C6。评论分母是从 C1 到 C9。

可编码评论中，9 条里有 6 条为肯定，即 66.7%。

完整账号集合：A、B、C。A 写了四条可编码评论。三条在 T1 上。一条在 T2 上。A 仍是一个账号。账号分母是 A、B、C、D、E 和 F。

已知可编码账号中，6 个里有 3 个为肯定，即 50%。

R1 留在这个分母之外。

完整帖子集合：T1、T2。帖子分母是 T1、T2 和 T3。

选定帖子中，3 个里有 2 个为肯定，即 66.7%。

完整社区集合：Q1。T3 在 Q2 中，而且 Q2 的两条评论都是否定。社区分母是 Q1 和 Q2。

选定社区中，2 个里有 1 个为肯定，即 50%。

这四个比例只描述选定样本。它们不是该主题在全体客户中的占比。全体中的占比，是指该主题在所有客户中的份额。你并未选定全体客户。

T1 持有六条肯定评论中的五条。这五条是 C1、C2、C3、C4 和 C5。

6 条中有 5 条 = 83.3%。

T1 是主导帖。主导表示它持有最多的“是”评论。

现在去掉 T1，再计数一次。剩余的可编码评论是 C6、C7、C8 和 C9。唯一剩余的肯定评论是 C6。账号 A 在 T2 上写下了它。

剩余评论集合：C6。分母是 C6、C7、C8 和 C9。

剩余可编码评论中，4 条里有 1 条为肯定，即 25%。

剩余的已知账号是 A、D、E 和 F。B 和 C 离开这个分母。他们仅有的可编码评论都在 T1 上。不要在这项检查中保留 B 或 C。不要加入来自 R1 的未知作者。A 是唯一剩余的肯定账号。A 仍然只计一次。

剩余账号集合：A。分母是 A、D、E 和 F。

剩余已知账号中，4 个里有 1 个为肯定，即 25%。

剩余帖子是 T2 和 T3。T2 仍为肯定。T3 不是。

剩余帖子集合：T2。分母是 T2 和 T3。

剩余帖子中，2 个里有 1 个为肯定，即 50%。

剩余社区仍然是 Q1 和 Q2。Q1 保持肯定，因为 T2 在 Q1 中。Q2 保持否定。

剩余社区集合：Q1。分母是 Q1 和 Q2。

剩余社区中，2 个里有 1 个为肯定，即 50%。

| 单位 | 完整样本 | 去掉 T1 |
| --- | --- | --- |
| 肯定评论 | 9 中有 6 = 66.7% | 4 中有 1 = 25% |
| 肯定的已知账号 | 6 中有 3 = 50% | 4 中有 1 = 25% |
| 肯定帖子 | 3 中有 2 = 66.7% | 2 中有 1 = 50% |
| 肯定社区 | 2 中有 1 = 50% | 2 中有 1 = 50% |

每个单位因不同的原因而变动。评论比例从 66.7% 降到 25%。T1 持有五条“是”评论。T2 上还剩一条“是”评论。账号比例从 50% 降到 25%。B 和 C 随 T1 离开。A 仍然留下，且只计一次。A 在 T1 上的三条发言不是三个账号。帖子比例从 66.7% 降到 50%。你从分子和分母两边都去掉 T1。T2 仍然符合条件。社区比例保持在 50%。Q1 仍有 T2。去掉 T1 并不会去掉 Q1。

该主题仍出现在第二个帖子中。它的评论频次由 T1 主导。比较时暂时去掉 T1，但把 T1 保留在最终采集到的记录集合中。影响备注应当说出两个事实。T1 提供了 6 条肯定评论中的 5 条。该主题在 T2 上仍出现一次。

R1 在两次计数中都仍是一条可用性备注。它从不变成一张“否”票。它从不变成一个账号。

这份虚构的有界结论范围很窄。在这些选定帖子中，评论率看起来高，主要是因为 T1。该主题存在于 6 个已知账号中的 3 个。它存在于 3 个帖子中的 2 个。它存在于 2 个社区中的 1 个。去掉 T1 之后，它仍存在于 1 个账号、1 个帖子和 1 个社区。这是继续研究的一条线索。它不是客户中的多数。它不是功能排名。

## 下一步

在你自己的已知公开帖子上计数一个主题。建立四个单位集合。在作出客户断言之前，先保存一条关于主导帖的备注。用 [Reddit Comments Actor](https://apify.com/chronometrica/reddit-comments-scraper) 采集这些行。从[客户语言研究 Task](https://apify.com/chronometrica/reddit-comments-scraper/examples/reddit-customer-language-research)开始，然后替换示例 URL，并把第一次上限选为 3。

## 来源和延伸阅读

- [Reddit Comments Actor](https://apify.com/chronometrica/reddit-comments-scraper)
- [客户语言研究 Task](https://apify.com/chronometrica/reddit-comments-scraper/examples/reddit-customer-language-research)
- [客户研究的最佳做法](https://www.reddit.com/r/ProductMarketing/comments/1liklfb/best_tactics_for_customer_research/)
- [在 Reddit 上做客户研究](https://www.reddit.com/r/SaaS/comments/1tb26ri/customer_research_on_reddit/)