

# 如何辨認重複及類似垃圾訊息的 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 絕不應被視為留言者是機器人或假帳戶的證據。

## 按 comment ID 合併重複的收集結果

分析數據的第一步，是合併完全相同 commentId 的重複紀錄。因為[匯出經常在數天內多次執行](/zh-Hant/articles/%E7%94%A8-n8n-%E8%87%AA%E5%8B%95%E6%94%B6%E9%9B%86-facebook-%E7%95%99%E8%A8%80/)，同一個字串 commentId 經常出現在多於一個下載檔案中。

按字串 commentId 去重，可確保你計算的是已觀察到的不同留言，而不是把同一匯出列計算多次。如果 commentId 987654321 出現在兩個不同的匯出檔案中，合併這些列後會留下單一筆已核對的紀錄。這個去重步驟為你提供乾淨的基線，然後你才查找不同留言之間的重複文字。

要了解這如何運作，設想一則虛構產品貼文在兩次收集中產生 12 列原始匯出。

- 收集到的原始匯出列總數：12
- 跨收集次數合併的重複 commentId 列：2
- 餘下已觀察到的不同留言：10

核對這些數目後，你有 10 筆不同的留言紀錄，可用來分析文字重複。

## 把不同 comment ID 之間的重複文字分組

合併重複的 comment ID 之後，下一步是把含有相同或幾乎相同文字字串的不同字串 comment ID 分組。這裏必須把留言身分與作者身分分開：擁有不同的 comment ID，並不表示這些訊息來自不同帳戶。單一作者帳戶可以發佈多則文字相同的獨立留言，多個不同帳戶也可以發佈完全相同的短語。

比較不同 comment ID 之間的文字時，使用溫和比對（例如把文字轉成小寫並去除多餘空白）有助把相同訊息分組。然而，你必須避免激進的文字清理，例如刪去整組字詞，或刪去會改變句子意思的特定符號。例如，如果清理規則從句子 "I do not recommend this item," 刪去 "not" 一字，句子會變成 "I do recommend this item,"，完全顛倒用戶的意見，並造成假陽性。

要有效管理重複短語，把重複文字分成三個主要類別：

1. 不同 comment ID 之間的相同文字：在不同留言紀錄之間逐字相符。這些紀錄可能在官方贈品活動、相片比賽或聯署活動期間，來自同一帳戶或不同帳戶。
2. 近似重複：有輕微錯字或詞序略有改動的短語，通常由複製貼上或範本回覆造成。
3. 情境性重複：例如 "How much is this?" 或 "Great photo!" 這類常見短語，會在許多不同貼文中自然出現。

### 虛構留言數據集拆解

我們可以把這些類別套用到虛構貼文例子中 10 則已觀察到的不同留言：

| 留言組別 | 留言 ID | 文字配對原因 | 已觀察次數 | 需要情境檢查？ | 人手審核決定 |
| --- | --- | --- | --- | --- | --- |
| 預期的贈品活動參加留言 | c101, c102, c103, c104 | 與比賽指示短語完全相符 | 4 個不同 ID | 是（對照貼文規則確認） | 保留為有效的活動參加紀錄 |
| 未經請求的推廣連結 | c201, c202, c203 | 相同的外部網站連結及推廣說詞 | 3 個不同 ID | 是（檢查貼文主題及對話串走向） | 標示以放入人手審核隊列 |
| 一般用戶討論 | c301, c302, c303 | 各自不同的用戶問題及產品回饋 | 3 個不同 ID | 否 | 保留在標準隊列 |

這個數據集涵蓋全部 10 則已觀察到的不同留言：4 則預期的贈品活動參加留言、3 則標示以供審核的推廣留言，以及 3 則一般討論留言。

把這些列分組，說明了為何情境重要。如果自動化指令碼把所有重複短語都標為垃圾訊息，那 4 則比賽參加留言會被錯誤針對，使只是依從贈品活動指示的真正粉絲感到挫折。

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

良好的審核流程着重已盡量減少個人資料的模式計數，而不是建立個人檔案清單或追蹤用戶個人資料。把計算不同 comment ID 與計算已觀察到的不同 author ID 一併進行，以找出不尋常的模式，同時避免收集不必要的個人資料。

緊記，在單一對話串中多次發佈的帳戶不會自動就是機器人。許多真正的社群成員在提出跟進問題、與其他買家交談或回覆職員時，都會留下多則留言。在作出任何審核決定之前，務必閱讀原貼文及周圍的對話串。情境顯示重複短語是有幫助的社群活動，還是不受歡迎的商業噪音。

為使工作流程保持有序，數據工作之間要維持清晰界線。基本檔案匯出、日期篩選及一般回饋分類，在我們關於[分析 Facebook 留言以了解顧客回饋](/zh-Hant/articles/facebook-%E7%95%99%E8%A8%80%E5%8C%AF%E5%87%BA%E8%88%87%E9%A1%A7%E5%AE%A2%E6%84%8F%E8%A6%8B%E5%88%86%E6%9E%90/)的指南中說明。公開互動公式、追蹤人數及公開計數器的量度方法，則在我們關於[公開 Facebook 貼文表現指標](/zh-Hant/articles/%E7%84%A1%E7%AE%A1%E7%90%86%E5%93%A1%E6%AC%8A%E9%99%90%E8%A8%88%E7%AE%97facebook%E4%BA%92%E5%8B%95%E7%8E%87/)的資源中介紹。把這些題目分開，可確保你的審核清單繼續集中於安全檢查重複文字。

一份完整的審核清單應包含留言組別、comment 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-Hant/articles/facebook-%E7%95%99%E8%A8%80%E5%8C%AF%E5%87%BA%E8%88%87%E9%A1%A7%E5%AE%A2%E6%84%8F%E8%A6%8B%E5%88%86%E6%9E%90/)
- [Facebook 貼文表現與公開數據指南](/zh-Hant/articles/%E7%84%A1%E7%AE%A1%E7%90%86%E5%93%A1%E6%AC%8A%E9%99%90%E8%A8%88%E7%AE%97facebook%E4%BA%92%E5%8B%95%E7%8E%87/)