

# 如何发现重复且类似垃圾信息的 Facebook 评论，同时避免错误指控

要找出重复且类似垃圾信息的 Facebook 评论，应在各次导出之间对已观察到的 ID 去重，把不同 ID 下的重复文本分组，并在做出任何决定之前核对原帖语境。社区管理员需要一份准确的待审清单，而不是会删除正当留言的自动化软件。通过提取公开来源记录、合并重复的数据库行，并仔细评估文本模式，你可以分离出不想要的商业噪音，同时保护真实的社区贡献。

## 了解公开导出行的结构

公开评论导出把非结构化的社交媒体讨论变成你可以检查和整理的干净数据行。每个导出行包含特定字段，包括以字符串存储的 commentId、contentId、text、authorId、authorUrl、parentCommentId、rootCommentId、isReply、publishedAt 和 scrapedAt。保持这些原始记录不变至关重要，因为修改原始文本或删除标识符会破坏公平人工审核所需的审计轨迹。

收集公开帖子数据时，你可以使用 [Facebook Comments Scraper](https://apify.com/chronometrica/facebook-comments-scraper)，每次运行从 1 到 100 个公开内容链接收集数据行。除非你选择收集全部可用记录，否则该 Actor 收集公开评论时不超过最大结果上限。数据库返回的每个 commentId 都是唯一的字符串值，用于标识一条特定评论或回复。

必须记住，原始数据工具不执行审核。该 Actor 收集原始文本，但不会识别机器人、检测垃圾信息、分析用户意图、对反馈分类、发送回复或发出自动警报。任何实际分析或判断都必须通过你自己的人工审核流程完成。此外，原始导出中 authorId 或 publishedAt 字段缺失的原因不明，因此缺失的作者 ID 绝不应被当作评论者是机器人或虚假账号的证据。

## 按评论 ID 合并重复采集

分析数据的第一步，是合并 commentId 完全相同的重复记录。因为[导出常常在数天内多次运行](/zh-Hans/articles/%E7%94%A8n8n%E8%87%AA%E5%8A%A8%E9%87%87%E9%9B%86facebook%E8%AF%84%E8%AE%BA/)，同一个字符串 commentId 经常出现在不止一个下载文件中。

按字符串 commentId 去重，可以确保你统计的是不同的已观察评论，而不是把同一导出行重复计数。如果 commentId 987654321 出现在两个不同的导出文件中，合并这些行后会留下一条已核对的记录。这一去重步骤会在你寻找不同评论之间的重复文本之前，给你一个干净的基线。

要了解这一过程如何运作，设想一个虚构的产品帖子，在 2 次采集运行中产生 12 行原始导出。

- 采集到的原始导出行总数：12
- 跨运行合并的重复 commentId 行：2
- 剩余的已观察不同评论：10

核对这些计数后，你有 10 条不同的评论记录可用于分析文本重复。

## 跨不同评论 ID 对重复文本分组

合并重复的评论 ID 之后，下一步是把包含相同或几乎相同文本字符串的不同字符串评论 ID 分组。这里必须区分评论身份和作者身份：评论 ID 不同，并不意味着这些留言来自不同账号。同一个作者账号可以发布多条文本相同的独立评论，多个不同账号也可以发布完全相同的短语。

在不同评论 ID 之间比较文本时，采用温和匹配——例如把文本转为小写并修剪多余空白——有助于把相同留言归为一组。但是，你必须避免激进的文本清理，例如删除整词或会改变句子含义的特定符号。例如，如果一条清理规则从句子 "I do not recommend this item," 中删除单词 "not"，该短语就会变成 "I do recommend this item,"，从而完全颠倒用户的意见，并造成假阳性。

为了有效管理重复短语，把重复文本分成三个主要类别：

1. 不同评论 ID 之间的相同文本：不同评论记录之间的精确词语匹配。在官方赠品活动、照片比赛或请愿活动期间，这些记录可能来自同一账号或不同账号。
2. 近似重复：有轻微拼写错误或词序略有变化的短语，通常由复制粘贴或模板式回复造成。
3. 语境性重复：像「这个多少钱？」或「照片很棒！」这样的常见短语，会自然地出现在许多不同帖子中。

### 虚构评论数据集分解

我们可以把这些类别应用到虚构帖子示例中的 10 条已观察不同评论：

| 评论组 | 评论 ID | 文本匹配原因 | 已观察计数 | 需要语境核对？ | 人工审核决定 |
| --- | --- | --- | --- | --- | --- |
| 预期的赠品活动参赛评论 | c101, c102, c103, c104 | 与比赛说明短语完全匹配 | 4 个不同 ID | 是（对照帖子规则确认） | 作为正当提交的活动参赛评论予以保留 |
| 未经请求的推广链接 | c201, c202, c203 | 外部网站链接和推广说辞完全相同 | 3 个不同 ID | 是（检查帖子主题和讨论串走向） | 标记到人工审核队列 |
| 一般用户讨论 | c301, c302, c303 | 彼此不同的用户提问和产品反馈 | 3 个不同 ID | 否 | 留在标准队列中 |

这一数据集涵盖全部 10 条已观察的不同评论：4 条预期的赠品活动参赛评论、3 条被标记待审的推广评论，以及 3 条一般讨论评论。

对这些行分组可以看出语境为何重要。如果自动化脚本把所有重复短语都标为垃圾信息，这 4 条为参加比赛而提交的评论就会被错误针对，使只是在遵循赠品说明的真实粉丝感到受挫。

## 建立安全的人工审核工作流程

良好的审核流程关注的是已尽量减少隐私信息的模式计数，而不是建立用户资料清单或追踪用户的个人详情。重点是同时统计不同的评论 ID 和不同的已观察作者 ID，以便发现异常模式，同时不收集不必要的个人数据。

请记住，在单个讨论串中多次发帖的账号并不自动就是机器人。许多真实的社区成员在提出后续问题、与其他买家交谈或回复工作人员时，会留下多条评论。在做出任何审核决定之前，始终阅读原帖和周围的对话讨论串。语境会表明，重复短语是有帮助的社区活动，还是不想要的商业噪音。

为了让工作流程保持有序，在数据任务之间维持清晰的边界。基本文件导出、按日期筛选和一般反馈整理，在我们关于[分析 Facebook 评论以获取客户反馈](/zh-Hans/articles/%E5%A6%82%E4%BD%95%E5%AF%BC%E5%87%BAfacebook%E8%AF%84%E8%AE%BA%E5%B9%B6%E5%88%86%E6%9E%90%E5%AE%A2%E6%88%B7%E5%8F%8D%E9%A6%88/)的指南中有说明。衡量公开互动的计算公式、关注者计数和公开计数器，则在我们关于[公开 Facebook 帖子表现指标](/zh-Hans/articles/%E6%97%A0%E7%AE%A1%E7%90%86%E5%91%98%E6%9D%83%E9%99%90-%E8%AE%A1%E7%AE%97-facebook-%E4%BA%92%E5%8A%A8%E7%8E%87/)的资料中介绍。把这些主题分开，可以确保你的审核清单始终专注于安全地检查重复文本。

一份完整的审核清单应包含评论组、评论 ID、文本匹配原因、已观察计数、语境备注以及最终的人工决定。如果时间戳缺失，不要试图计算精确的发帖速度。也不要使用僵化的任意分界值来表示垃圾信息置信度，或使用自动概率分数。人工审核应始终是最后一步。

## 结论

找出重复的 Facebook 评论需要准确的来源数据、正确的字符串去重，以及仔细的人工核对。通过合并重复的导出记录，并在不删去关键词语的情况下对文本模式分组，你可以保护真实的社区成员，同时标出不想要的商业噪音。要收集审核清单所需的结构化数据行，[Facebook Comments Scraper](https://apify.com/chronometrica/facebook-comments-scraper) 会提供可供人工审核追溯的导出记录。

## 来源和延伸阅读

- [Apify Facebook Comments Scraper Actor](https://apify.com/chronometrica/facebook-comments-scraper)
- [Facebook 评论客户反馈分析指南](/zh-Hans/articles/%E5%A6%82%E4%BD%95%E5%AF%BC%E5%87%BAfacebook%E8%AF%84%E8%AE%BA%E5%B9%B6%E5%88%86%E6%9E%90%E5%AE%A2%E6%88%B7%E5%8F%8D%E9%A6%88/)
- [Facebook 帖子表现与公开数据指南](/zh-Hans/articles/%E6%97%A0%E7%AE%A1%E7%90%86%E5%91%98%E6%9D%83%E9%99%90-%E8%AE%A1%E7%AE%97-facebook-%E4%BA%92%E5%8A%A8%E7%8E%87/)