如何用Python提取YouTube视频纯净可分析的转录文本
解决YouTube转录文本格式问题:去除时间信息、补全标点与分句
问题描述
使用youtube_transcript_api提取YouTube视频转录文本时,返回结果包含start、duration等无关时间信息,且自动生成的文本无标点、未拆分完整句子,无法直接用于文本分析。
解决方案
1. 提取纯文本(移除时间信息)
遍历返回的字典列表,仅提取text字段即可剥离时间相关数据:
from youtube_transcript_api import YouTubeTranscriptApi # 获取视频转录数据 srt = YouTubeTranscriptApi.get_transcript("pxiP-HJLCx0") # 提取纯文本内容 pure_text_list = [item['text'] for item in srt] # 拼接为完整文本(先保留原始连缀状态,后续处理标点分句) raw_content = ' '.join(pure_text_list) # 保存纯文本到文件 with open("clean_subtitles.txt", "w", encoding="utf-8") as f: f.write(raw_content)
2. 补全标点与分句
方法一:优先使用人工创建的字幕
人工上传的字幕自带完整标点与分句格式,优先获取这类转录版本:
from youtube_transcript_api import YouTubeTranscriptApi transcript_list = YouTubeTranscriptApi.list_transcripts('pxiP-HJLCx0') try: # 查找英文人工转录字幕 transcript = transcript_list.find_manually_created_transcript(['en']) formatted_data = transcript.fetch() # 拼接带标点的完整文本 formatted_content = ' '.join([item['text'] for item in formatted_data]) with open("formatted_subtitles.txt", "w", encoding="utf-8") as f: f.write(formatted_content) except: print("无人工创建字幕,将使用自动生成字幕进行格式修复")
方法二:用NLP工具修复自动生成字幕
如果只有自动生成的无标点字幕,使用spaCy这类NLP工具补全标点并分句:
首先安装依赖:
pip install spacy python -m spacy download en_core_web_sm
然后编写处理代码:
import spacy from youtube_transcript_api import YouTubeTranscriptApi # 加载spaCy英文模型 nlp = spacy.load("en_core_web_sm") # 获取自动生成的转录文本 srt = YouTubeTranscriptApi.get_transcript("pxiP-HJLCx0") raw_text = ' '.join([item['text'] for item in srt]) # 分句并补全标点 doc = nlp(raw_text) formatted_text = '\n'.join([sent.text.strip() for sent in doc.sents]) # 保存处理后的文本 with open("fixed_subtitles.txt", "w", encoding="utf-8") as f: f.write(formatted_text)
处理后输出的文本会自动补全标点、拆分完整句子,可直接用于文本分析。
内容的提问来源于stack exchange,提问作者Do Hun Kim
相关产品推荐
相关产品推荐

