Skip to content

antonia-sz/shortvideo_multimodal_analysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

短视频多模态内容分析工具集

Short Video Multimodal Analysis Toolkit


📌 项目简介

本项目是一套用于短视频内容多模态分析的 Python 工具集,涵盖数据抽样、文本 NLP 分析、视觉符号识别与统计三大模块。适用于城市形象传播、旅游短视频、社交媒体内容分析等研究场景。

核心功能

  • 分层抽样:基于多维度分层变量的科学抽样
  • 文本分析:LDA 主题建模 + SnowNLP 情感分析
  • 视觉分析:视频下载 → 关键帧提取 → VLM 视觉符号识别 → 统计分析

📂 项目结构

shortvideo_multimodal_analysis/
│
├── sampling/                          # 数据抽样模块
│   └── stratified_sampler.py          # 分层随机抽样工具
│
├── text_nlp_analytics/                # 文本NLP分析模块
│   ├── lda_topic_analysis.py          # LDA主题分析
│   ├── sentiment_analysis.py          # SnowNLP情感分析
│   └── stopwords.txt                  # 中文停用词表
│
└── visual_symbol_analysis/            # 视觉符号分析模块
    │
    ├── shortvideo_frame_extraction/   # 视频采集与切帧
    │   ├── 1_video_downloader.py      # 短视频批量下载
    │   ├── 2_video_quality_checker.py # 下载质量检测
    │   └── 3_frame_extractor.py       # 视频批量切帧
    │
    ├── visual_symbol_recognition/     # 视觉符号识别
    │   ├── 1_frame_sampler.py         # 帧图片分层抽样
    │   ├── 2_vlm_open_coding.py       # VLM开放式视觉编码
    │   └── 3_vlm_batch_recognition.py # VLM批量符号识别
    │
    └── visual_symbol_stats/           # 视觉符号统计
        ├── 1_level1_symbol_distribution.py  # 一级符号宏观分布
        ├── 2_level2_symbol_statistics.py    # 二级符号细粒度统计
        └── 3_symbol_structure_analysis.py   # 符号结构与共现分析

🔧 环境依赖

Python 版本

  • Python 3.8+

核心依赖库

# 数据处理
pandas
numpy
openpyxl

# 文本分析
jieba
gensim
snownlp
pyLDAvis

# 视觉分析
opencv-python
requests
tqdm
openai  # 用于调用 VLM API

# 可视化
matplotlib

安装依赖

pip install pandas numpy openpyxl jieba gensim snownlp pyLDAvis opencv-python requests tqdm openai matplotlib

外部工具

  • ffmpeg:视频切帧需要(请自行安装并配置路径)

📖 模块详解

1. 数据抽样模块 (sampling/)

stratified_sampler.py - 分层随机抽样工具

功能:从母体数据中按多个分层变量进行分层随机抽样,确保样本结构与母体一致。

特性

  • 支持自定义抽样比例(默认 20%)
  • 自动调整各层样本量,保证总数精确
  • 固定随机种子,结果可复现
  • 输出分层统计报告

使用方法

# 修改配置区的文件路径
INPUT_FILE = "your_data.xlsx"
OUTPUT_FILE = "sampled_data.xlsx"
COL_QUARTER = "发布季度"      # 分层变量1
COL_LIKETIER = "点赞档位"     # 分层变量2
SAMPLE_RATIO = 0.20           # 抽样比例

# 运行脚本
python stratified_sampler.py

2. 文本NLP分析模块 (text_nlp_analytics/)

lda_topic_analysis.py - LDA主题分析工具

功能:对短视频文案/描述进行主题建模,自动发现文本主题结构。

流程

  1. 文本清洗(去URL、去话题标签、去特殊字符)
  2. jieba 分词 + 停用词过滤
  3. 在 K 范围内训练多个 LDA 模型
  4. 基于 Topic Coherence 自动选择最优主题数
  5. 导出主题关键词、文档主题分布、pyLDAvis 可视化

输出文件

  • lda_topics_keywords.csv:各主题 Top 关键词
  • output_with_topics.xlsx:带主题分布的原始数据
  • lda_vis_bestK.html:pyLDAvis 交互式可视化
  • coherence_k4_10.png:Coherence 曲线图

sentiment_analysis.py - SnowNLP情感分析工具

功能:基于 SnowNLP 计算文本情感得分,划分情感倾向标签。

输出

  • 情感得分(0-1,越接近1越正向)
  • 情感标签(正向/中性/负向)
  • 整体情感分布统计
  • 按主题分组的情感分布

3. 视觉符号分析模块 (visual_symbol_analysis/)

3.1 视频采集与切帧 (shortvideo_frame_extraction/)

脚本 功能
1_video_downloader.py 从 Excel 读取分享链接,调用解析 API 批量下载视频
2_video_quality_checker.py 检测下载视频质量,识别异常/损坏文件
3_frame_extractor.py 使用 ffmpeg 对视频按 1fps 抽帧

视频下载特性

  • 自动识别链接列
  • 优先下载 720p 高清
  • 断点续传(跳过已下载)
  • 失败自动重试 + 记录失败原因

3.2 视觉符号识别 (visual_symbol_recognition/)

脚本 功能
1_frame_sampler.py 从帧图片中随机抽样,用于开放式编码
2_vlm_open_coding.py 调用 VLM 进行开放式视觉编码(探索性)
3_vlm_batch_recognition.py 基于预定义符号体系的批量多标签分类

VLM 批量识别特性

  • 多线程并发处理(可配置线程数)
  • 断点续跑(中断后自动从上次位置继续)
  • 内置重试机制 + 优雅退出处理
  • 定期写盘,防止数据丢失

API 配置

# 设置环境变量(使用阿里云 DashScope)
export DASHSCOPE_API_KEY="your_api_key"

3.3 视觉符号统计 (visual_symbol_stats/)

脚本 功能
1_level1_symbol_distribution.py 一级符号帧级分布 + 视频覆盖率统计
2_level2_symbol_statistics.py 二级符号 TopN + 集中度 + 代表性物象
3_symbol_structure_analysis.py 视频级主导符号 + 符号共现分析

统计输出示例

  • 符号出现频次与占比
  • 符号分布集中度(Top1/3/5/10/20 累计占比)
  • 视频覆盖率(至少出现一次的视频比例)
  • 符号共现关系(哪些符号经常同时出现)

🚀 快速开始

典型工作流

1. 数据准备
   └── 准备包含视频链接/文本的 Excel 文件

2. 抽样(可选)
   └── sampling/stratified_sampler.py

3. 文本分析
   ├── text_nlp_analytics/lda_topic_analysis.py
   └── text_nlp_analytics/sentiment_analysis.py

4. 视觉分析
   ├── 下载视频 → 1_video_downloader.py
   ├── 质量检测 → 2_video_quality_checker.py
   ├── 视频切帧 → 3_frame_extractor.py
   ├── VLM识别 → 3_vlm_batch_recognition.py
   └── 统计分析 → visual_symbol_stats/*.py

⚠️ 注意事项

  1. API 密钥:视觉符号识别模块需要配置 VLM API 密钥(如阿里云 DashScope)
  2. ffmpeg 路径:视频切帧前请确保 ffmpeg 已安装并正确配置路径
  3. 文件路径:各脚本配置区的文件路径需根据实际情况修改
  4. 视频下载:需要配置第三方视频解析 API

📄 License

MIT License


🤝 贡献

欢迎提交 Issue 和 Pull Request!

About

🎬 短视频多模态内容分析工具集:分层抽样、文本NLP分析( LDA主题分析 + SnowNLP情感分析)、图像分析(视频解析+切帧+ VLM视觉符号识别)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages