You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用BigQuery识别英文文本并过滤YouTube频道描述?

筛选英文YouTube频道描述的优化方案

针对你的需求,以下几种方案比手动标记+逻辑回归更高效,可根据精度要求和资源情况选择:

方案1:基于字符集的快速初步筛选

思路:英文核心字符以ASCII(32-126位)为主,通过统计ASCII字符占比设定阈值过滤,适合快速批量初筛。缺点是会误判含少量非ASCII(如表情、外来词)的英文内容,可调整阈值适配。

WITH foo AS (
  SELECT ".olá sejam muito bem vindos. este canal foi criado" AS x
  UNION ALL SELECT "Hello, I am Abhy and welcome to my channel." AS x
  UNION ALL SELECT "Channels I love:  Labrant Fam, Norris Nuts, La Familia Diamond, Piper Rockelle" AS x
  UNION ALL SELECT "हेलो दोस्तो  रमेश और सागर और सुखदेव आपका स्वागत करते हैं इस चैनल के ऊपर" AS x
  UNION ALL SELECT "Hi, I'm K-POP RANDOM👩🇲🇨 === 🌈KPOP RANDOM DANCE🌈 === 🌻I hope you can enjoy" AS x
  UNION ALL SELECT 'Public TV Kannada news channel. The slogan is "Yaara Aasthiyoo Alla, Idu Nimma TV"' AS x
  UNION ALL SELECT "Instagram: www.instagram.com/whatsfordinner5291/" AS x
  UNION ALL SELECT "Welcome to RunningBoy12, a gaming channel brought to you by RO!" as x
)
SELECT 
  x,
  SAFE_DIVIDE(
    SUM(IF(ORD(SUBSTR(x, pos, 1)) BETWEEN 32 AND 126, 1, 0)),
    LENGTH(x)
  ) AS ascii_char_ratio,
  CASE 
    WHEN SAFE_DIVIDE(SUM(IF(ORD(SUBSTR(x, pos, 1)) BETWEEN 32 AND 126, 1, 0)), LENGTH(x)) >= 0.9 
    THEN 'English' 
    ELSE 'Non-English' 
  END AS language_prediction
FROM foo,
UNNEST(GENERATE_ARRAY(1, LENGTH(x))) AS pos
GROUP BY x
ORDER BY ascii_char_ratio DESC;

方案2:用BigQuery集成的自然语言API精准检测

思路:直接调用Google Cloud自然语言API(需提前启用权限),返回文本主语言及置信度,是精度最高的方案,适合最终筛选环节。

WITH foo AS (
  SELECT ".olá sejam muito bem vindos. este canal foi criado" AS x
  UNION ALL SELECT "Hello, I am Abhy and welcome to my channel." AS x
  UNION ALL SELECT "Channels I love:  Labrant Fam, Norris Nuts, La Familia Diamond, Piper Rockelle" AS x
  UNION ALL SELECT "हेलो दोस्तो  रमेश और सागर और सुखदेव आपका स्वागत करते हैं इस चैनल के ऊपर" AS x
  UNION ALL SELECT "Hi, I'm K-POP RANDOM👩🇲🇨 === 🌈KPOP RANDOM DANCE🌈 === 🌻I hope you can enjoy" AS x
  UNION ALL SELECT 'Public TV Kannada news channel. The slogan is "Yaara Aasthiyoo Alla, Idu Nimma TV"' AS x
  UNION ALL SELECT "Instagram: www.instagram.com/whatsfordinner5291/" AS x
  UNION ALL SELECT "Welcome to RunningBoy12, a gaming channel brought to you by RO!" as x
)
SELECT
  x,
  ML.DETECT_LANGUAGE(x) AS language_info
FROM foo;

返回的language_info包含语言代码(如en代表英文)、置信度等字段,可通过language_info.language = 'en' AND language_info.confidence > 0.7过滤高置信度的英文内容。

方案3:规则+统计的轻量筛选

思路:结合英文常见特征(如停用词占比),无需外部API,平衡成本与精度,适合离线场景。

WITH foo AS (
  SELECT ".olá sejam muito bem vindos. este canal foi criado" AS x
  UNION ALL SELECT "Hello, I am Abhy and welcome to my channel." AS x
  UNION ALL SELECT "Channels I love:  Labrant Fam, Norris Nuts, La Familia Diamond, Piper Rockelle" AS x
  UNION ALL SELECT "हेलो दोस्तो  रमेश और सागर और सुखदेव आपका स्वागत करते हैं इस चैनल के ऊपर" AS x
  UNION ALL SELECT "Hi, I'm K-POP RANDOM👩🇲🇨 === 🌈KPOP RANDOM DANCE🌈 === 🌻I hope you can enjoy" AS x
  UNION ALL SELECT 'Public TV Kannada news channel. The slogan is "Yaara Aasthiyoo Alla, Idu Nimma TV"' AS x
  UNION ALL SELECT "Instagram: www.instagram.com/whatsfordinner5291/" AS x
  UNION ALL SELECT "Welcome to RunningBoy12, a gaming channel brought to you by RO!" as x
),
english_stopwords AS (
  SELECT word FROM UNNEST(['the', 'and', 'i', 'to', 'a', 'is', 'you', 'my', 'welcome', 'hope']) AS word
)
SELECT
  x,
  SAFE_DIVIDE(COUNT(DISTINCT sw.word), (SELECT COUNT(*) FROM english_stopwords)) AS stopword_match_ratio,
  CASE 
    WHEN SAFE_DIVIDE(COUNT(DISTINCT sw.word), (SELECT COUNT(*) FROM english_stopwords)) >= 0.2 
    THEN 'English' 
    ELSE 'Non-English' 
  END AS language_prediction
FROM foo
LEFT JOIN english_stopwords sw ON REGEXP_CONTAINS(LOWER(x), CONCAT(r'\b', sw.word, r'\b'))
GROUP BY x
ORDER BY stopword_match_ratio DESC;

方案对比

你提出的手动标记+逻辑回归方案适合数据有特殊英文特征的定制场景,但标注成本高。上述方案各有优势:

  • 方案1最快,适合批量初筛;
  • 方案2精度最高,适合最终筛选;
  • 方案3无需外部依赖,平衡成本与效果。

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:25:17