-
Notifications
You must be signed in to change notification settings - Fork 67
/
transcribir video.py
52 lines (43 loc) · 1.68 KB
/
transcribir video.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import pandas as pd, matplotlib.pyplot as plt
# Extraccion de subtitulos y conteo de palabras
def getData(videoID):
from youtube_transcript_api import YouTubeTranscriptApi
data = YouTubeTranscriptApi.get_transcript(videoID, languages=['es'])
df = pd.DataFrame(data)
compList = list(df['text'].str.split(" "))
flatList = [item for sublist in compList for item in sublist]
wordsDF = pd.DataFrame(flatList, columns=['words'])
conteo = wordsDF.words.value_counts().to_frame()
return conteo
# Filtro de palabras sin significado propio
def filterDataEsp(df):
filt = 'que de la y en el a los un es las se por lo con del nos una como al'
filt += ' más esto este está al eso hay ha su les porque esta son cada sin me'
filt += ' sus ser ese cómo han qué acá estas allí va ahí mi aquí o le esa para'
filtList = filt.split()
ret = df[~df.index.isin(filtList)]
return ret
# Gráfico Top N
def graf(df, n=30):
top = dataF.head(n)
plt.style.use('dark_background')
fig, ax = plt.subplots(figsize=(15,5))
ax.bar(top.index, top.words, color='tab:blue')
plt.xticks(rotation=90, fontsize=18)
return plt
videoID = 'zXfNnB7fjVo' # 25 Abr 2020 Cadena Nac AF
top = 40
# Recoleccion de datos, filtrado y grafico en pantalla
data = getData(videoID)
dataF = filterDataEsp(data)
graf(dataF, top).show()
# Ipmprimir diccionario top 200
dataDict={}
for idx, row in dataF.head(200).iterrows():
dataDict[idx]=row.words
print(dataDict)
#Comparar Palabras
f = dataF[dataF.index.isin(['yo','nosotros','ustedes'])]
print(f)
# Instalar el paquete YouTubeTranscriptApi:
# pip install youtube_transcript_api