Searching in podcast collection

using SimilaritySearch, SimSearchManifoldLearning, TextSearch, CodecZlib, JSON, DataFrames, Plots, StatsBase, DataFrames, Clustering, Markdown, Latexify
using Downloads: download

This example is about searching in a caption/subtitle collection, i.e., looking for passages in audiobooks, youtube videos, conferences, podcasts, etc. The audio should be translated with a speech to text model, i.e., Whisper of OpenAI.

Having a WebVTT set of files we need to load the corpus. The files we are using as dataset are WebVTT subtitles, which can be readed with the following code, note that this code is not part of the example and can be ignored.

mutable struct EntryVTT
    type::Symbol
    name::String
    tbegin::String
    tend::String
    data::Vector{String}
end

function webvtt!(filename, idfile, D)
    L = []
    B = nothing

    open(filename) do f
        lineno = 0
        while !eof(f)
            line = readline(f)
            lineno += 1
            if line == "WEBVTT"
                B = EntryVTT(:WEBVTT, "", "", "", String[])
                push!(L, B)
                continue
            end

            n = length(line)
            if n == 0 # flush
                if B.type === :caption
                    for caption in B.data
                        push!(D, (; idfile, B.name, B.tbegin, B.tend, caption))
                    end
                end
                B = nothing
                continue
            end

            if B === nothing
                m = match(r"^NOTE (.*)", line)
                if m !== nothing
                    B = EntryVTT(:NOTE, "", "", "", String[])
                    push!(L, B)
                    if length(m.captures[1]) > 0
                        push!(B.data, m.captures[1])
                    end

                    continue
                end

                if "REGION" == line
                    B = EntryVTT(:REGION, "", "", "", String[])
                    push!(L, B)
                    continue
                end

                if occursin("-->", line)
                    tbegin, tend = split(line)[[1, 3]]
                    B = EntryVTT(:caption, "", tbegin, tend, String[])
                    continue
                end

                B = EntryVTT(:caption, line, "", "", String[])
                push!(L, B)
            else
                if occursin("-->", line)
                    B.tbegin, B.tend = split(line)[[1, 3]]
                    continue
                end
                push!(B.data, line) # appends to the last
            end
        end
    end

    B !== nothing && push!(L, B)
    L, D
end

Now, we load the dataset

podcasts = sort!(readdir("/home/sadit/sites/SimilaritySearchDemos/podcast-vtt/", join=true))

D = DataFrame(idfile=String[], name=String[], tbegin=String[], tend=String[], caption=String[])

for filename in podcasts
    webvtt!(filename, basename(filename), D)
end

D
21013×5 DataFrame
20988 rows omitted
Row idfile name tbegin tend caption
String String String String String
1 tres-patines-y-la-tremenda-corte_0000.vtt 00:00.000 00:11.000 Audiencia pública, el tremendo juez de la tremenda corte va a resolver un tremendo caso.
2 tres-patines-y-la-tremenda-corte_0000.vtt 00:11.000 00:13.000 Buenas noches, secretario.
3 tres-patines-y-la-tremenda-corte_0000.vtt 00:15.000 00:18.000 Buenas noches, señor juez. ¿Cómo se siente hoy?
4 tres-patines-y-la-tremenda-corte_0000.vtt 00:18.000 00:25.000 Campana. Hoy me siento panetela. De manera que vamos a ver si acabamos pronto que esta noche me voy de rumba.
5 tres-patines-y-la-tremenda-corte_0000.vtt 00:25.000 00:27.000 No me digas. ¿Se va usted de rumba?
6 tres-patines-y-la-tremenda-corte_0000.vtt 00:27.000 00:30.000 Sí, tengo un carrito ahí que es algo serio.
7 tres-patines-y-la-tremenda-corte_0000.vtt 00:30.000 00:32.000 Ah, oígame. ¿Jóven?
8 tres-patines-y-la-tremenda-corte_0000.vtt 00:32.000 00:36.000 Un pollito. No tiene más que 46 años.
9 tres-patines-y-la-tremenda-corte_0000.vtt 00:36.000 00:40.000 ¿Y una mujer de 46 años le llama a usted pollito todavía?
10 tres-patines-y-la-tremenda-corte_0000.vtt 00:40.000 00:42.000 Claro que sí. ¿Qué número es gallina en la bola?
11 tres-patines-y-la-tremenda-corte_0000.vtt 00:42.000 00:43.000 54.
12 tres-patines-y-la-tremenda-corte_0000.vtt 00:43.000 00:45.000 Entonces hasta los 53 sigue siendo un pollito.
13 tres-patines-y-la-tremenda-corte_0000.vtt 00:45.000 00:47.000 Ah, bueno. ¿Y es bonita?
21002 tres-patines-y-la-tremenda-corte_0050.vtt 16:26.080 16:26.880 ¿Por qué?
21003 tres-patines-y-la-tremenda-corte_0050.vtt 16:26.880 16:28.200 Porque no tuvieron éxito.
21004 tres-patines-y-la-tremenda-corte_0050.vtt 16:28.200 16:29.800 Escriba ahí, secretario.
21005 tres-patines-y-la-tremenda-corte_0050.vtt 16:29.840 16:31.400 Venga la sentencia.
21006 tres-patines-y-la-tremenda-corte_0050.vtt 16:31.400 16:35.040 El tribunal dictamina que ustedes han hecho leña a la finca de
21007 tres-patines-y-la-tremenda-corte_0050.vtt 16:35.040 16:37.440 Nananina perjudicando a su dueña.
21008 tres-patines-y-la-tremenda-corte_0050.vtt 16:37.440 16:40.520 Y por todo ese estropicio que parece obra de locos,
21009 tres-patines-y-la-tremenda-corte_0050.vtt 16:40.520 16:44.040 pagarán 5,000 cocos más las costas de este juicio.
21010 tres-patines-y-la-tremenda-corte_0050.vtt 16:44.040 16:47.720 Escucha el siguiente programa de La Tremenda Corte con Leopoldo
21011 tres-patines-y-la-tremenda-corte_0050.vtt 16:47.720 16:50.920 Fernández, Mimí Cali y Aníbal de Mar por esta emisora.
21012 tres-patines-y-la-tremenda-corte_0050.vtt 16:50.920 16:53.720 Hasta entonces, Manolo Iglesias, que les habla,
21013 tres-patines-y-la-tremenda-corte_0050.vtt 16:53.720 16:56.360 les dice, muy buena suerte, amigos.

Functions create to encode texto into bag-of-word vectors

textconfig = TextConfig(
    group_usr=true,
    group_url=true,
    del_diac=true,
    lc=true,
    group_num=true,
    nlist=[1],
    qlist=[])

# corpus here can be a sample to avoid double parsing
voc = Vocabulary(textconfig, D.caption) 
model = VectorModel(IdfWeighting(), TfWeighting(), voc)
# model = VectorModel(EntropyWeighting(), BinaryLocalWeighting(), voc, D.text, D.klass; smooth=1.0)
#model = VectorModel(IdfWeighting(), TfWeighting(), voc)
model = filter_tokens(model) do t
    t.weight >= 0.05
end

vectors = VectorDatabase(vectorize_corpus(model, D.caption))

UMAP projections

UMAP projection can take a while, even on multithreading systems. Note that we are creating 2d and 3d projections.

1e2, e3 = let min_dist=0.5f0,
             k=16,
             n_epochs=75,
             neg_sample_rate=3,
             tol=1e-3,
             layout=SpectralLayout(),
             indexsize=2048,
             dist=NormalizedCosineDistance()

    index = ExhaustiveSearch(; db=rand(vectors, indexsize), dist)
    @time U2 = fit(UMAP, index; k, neg_sample_rate, layout, n_epochs, tol, min_dist)
    @time U3 = fit(U2, 3; neg_sample_rate, n_epochs, tol)
    @time e2 = clamp.(predict(U2, vectors), -10f0, 10f0)
    @time e3 = clamp.(predict(U3, vectors), -10f0, 10f0)
    e2, e3
end
1
The UMAP algorithm has a lot of hyperparameters; min_dist controls the distance between projected points, k is the number of neighbors to be used in the underlying \(k\)nn graph, n_epochs the number of epochs used to optimize the projection, neg_sample_rate means for the number of negative examples used in the optimization process, tol the tolerance to converge, layout

Visualizations

function normcolors(V)
    min_, max_ = extrema(V)
    V .= (V .- min_) ./ (max_ - min_)
    V .= clamp.(V, 0, 1)
end

normcolors(@view e3[1, :])
normcolors(@view e3[2, :])
normcolors(@view e3[3, :])

C = [RGB(c[1], c[2], c[3]) for c in eachcol(e3)]

X = @view e2[1, :]
Y = @view e2[2, :]
scatter(X, Y, color=C, fmt=:png, alpha=0.2, size=(600, 600), ma=0.3, ms=2, msw=0, label="")

plot!()
dbscanresult = dbscan(e2, 0.035, min_cluster_size=10);
display(length(dbscanresult.clusters))

plot()
for (i, c) in enumerate(dbscanresult.clusters)
    X = @view e2[1, c.core_indices]
    Y = @view e2[2, c.core_indices]
    scatter!(X, Y, c=:auto, fmt=:png, size=(600, 600), ma=0.3, a=0.3, ms=1, msw=0, label="")
    if rand() < 0.1  # just to show some examples 
        X = c.core_indices
        sampled = ""
        if length(X) > 20
            sampled = "-- showing a small sample"
            X = rand(X, 20)
        end
        display(Markdown.parse("## Cluster $i with $(length(c.core_indices)) elements $sampled"))
        display(latexify(D[X, :], env=:mdtable, latex=false))
    end
end

plot!()
174

Cluster 20 with 23 elements – showing a small sample

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0018.vtt 14:36.000 14:37.000 Pero acláreme una cosa.
tres-patines-y-la-tremenda-corte_0019.vtt 05:22.000 05:23.000 Una cosa que él leyó allí.
tres-patines-y-la-tremenda-corte_0037.vtt 05:15.000 05:17.000 Nada, chicos, esta cosa de la vida.
tres-patines-y-la-tremenda-corte_0037.vtt 05:17.000 05:19.000 Cosa de la vida, cosa suya.
tres-patines-y-la-tremenda-corte_0040.vtt 11:39.000 11:40.000 Bueno, les voy a decir.
tres-patines-y-la-tremenda-corte_0040.vtt 11:39.000 11:40.000 Bueno, les voy a decir.
tres-patines-y-la-tremenda-corte_0017.vtt 07:00.000 07:02.000 Mire cómo es la cosa.
tres-patines-y-la-tremenda-corte_0000.vtt 02:49.000 02:50.000 Pero acláreme una cosa.
tres-patines-y-la-tremenda-corte_0018.vtt 14:36.000 14:37.000 Pero acláreme una cosa.
tres-patines-y-la-tremenda-corte_0018.vtt 14:36.000 14:37.000 Pero acláreme una cosa.
tres-patines-y-la-tremenda-corte_0024.vtt 05:38.000 05:40.000 Que lo traigo para freír
tres-patines-y-la-tremenda-corte_0036.vtt 03:30.000 03:33.000 Claro que sí, chico. Si alguien te tiene frito a ti, será ella, chico.
tres-patines-y-la-tremenda-corte_0018.vtt 11:27.000 11:28.000 ¿Que fue usted sorprendida
tres-patines-y-la-tremenda-corte_0009.vtt 02:14.000 02:15.000 Qué cosa, hombre.
tres-patines-y-la-tremenda-corte_0011.vtt 13:08.000 13:09.000 ¿Y no es la misma cosa?
tres-patines-y-la-tremenda-corte_0044.vtt 03:36.000 03:38.000 Me le paré a la... en la misma carreta le dije setenta mil horroretos.
tres-patines-y-la-tremenda-corte_0018.vtt 11:27.000 11:28.000 ¿Que fue usted sorprendida
tres-patines-y-la-tremenda-corte_0044.vtt 11:03.000 11:04.000 ¿Y eso por qué?
tres-patines-y-la-tremenda-corte_0040.vtt 05:16.000 05:18.000 Entonces la cosa parece grave.
tres-patines-y-la-tremenda-corte_0018.vtt 14:36.000 14:37.000 Pero acláreme una cosa.

Cluster 41 with 40 elements – showing a small sample

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0000.vtt 05:41.000 05:43.000 Pues cállese entonces, señor.
tres-patines-y-la-tremenda-corte_0025.vtt 01:20.440 01:23.520 Que los otros días fue a la playa de Boca Ciega.
tres-patines-y-la-tremenda-corte_0028.vtt 14:26.000 14:27.000 ¿Con el cigarro en la boca?
tres-patines-y-la-tremenda-corte_0005.vtt 06:47.000 06:48.000 Cállese ahora, trepatín.
tres-patines-y-la-tremenda-corte_0045.vtt 06:01.000 06:03.000 Bueno, bueno, cállese la boca.
tres-patines-y-la-tremenda-corte_0005.vtt 06:47.000 06:48.000 Cállese ahora, trepatín.
tres-patines-y-la-tremenda-corte_0033.vtt 07:21.000 07:22.000 Cállese la boca
tres-patines-y-la-tremenda-corte_0005.vtt 06:47.000 06:48.000 Cállese ahora, trepatín.
tres-patines-y-la-tremenda-corte_0003.vtt 15:42.320 15:43.320 Cállese la boca.
tres-patines-y-la-tremenda-corte_0005.vtt 06:50.000 06:51.000 Cállese la boca.
tres-patines-y-la-tremenda-corte_0018.vtt 05:29.000 05:31.000 Cáese la boca.
tres-patines-y-la-tremenda-corte_0042.vtt 11:26.000 11:27.000 Con la boca del tógamo.
tres-patines-y-la-tremenda-corte_0010.vtt 07:02.000 07:04.000 Mire, cállese usted la boca, cállese la boca.
tres-patines-y-la-tremenda-corte_0005.vtt 06:50.000 06:51.000 Cállese la boca.
tres-patines-y-la-tremenda-corte_0033.vtt 07:24.000 07:26.000 Cállese la boca
tres-patines-y-la-tremenda-corte_0014.vtt 09:07.000 09:08.000 Cállese la boca a usted
tres-patines-y-la-tremenda-corte_0005.vtt 06:47.000 06:48.000 Cállese ahora, trepatín.
tres-patines-y-la-tremenda-corte_0015.vtt 05:16.000 05:17.000 Cállese la boca.
tres-patines-y-la-tremenda-corte_0015.vtt 05:16.000 05:17.000 Cállese la boca.
tres-patines-y-la-tremenda-corte_0033.vtt 07:24.000 07:26.000 Cállese la boca

Cluster 58 with 34 elements – showing a small sample

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0011.vtt 10:03.000 10:04.000 Sí, mire.
tres-patines-y-la-tremenda-corte_0011.vtt 10:03.000 10:04.000 Sí, mire.
tres-patines-y-la-tremenda-corte_0017.vtt 01:49.000 01:50.000 Sí, sí, sí. Da gusto consultarse.
tres-patines-y-la-tremenda-corte_0011.vtt 12:16.000 12:18.000 Sí, una comida redonda.
tres-patines-y-la-tremenda-corte_0013.vtt 00:47.000 00:48.000 Sí, estilo Chicago.
tres-patines-y-la-tremenda-corte_0044.vtt 13:36.000 13:37.000 Sí, se subió.
tres-patines-y-la-tremenda-corte_0044.vtt 13:36.000 13:37.000 Sí, se subió.
tres-patines-y-la-tremenda-corte_0031.vtt 01:50.000 01:52.000 Sí, lo felicito.
tres-patines-y-la-tremenda-corte_0048.vtt 08:10.000 08:11.000 Sí, el plan de regalos.
tres-patines-y-la-tremenda-corte_0019.vtt 07:34.000 07:36.000 Medianoche con pepino, sí.
tres-patines-y-la-tremenda-corte_0016.vtt 07:37.160 07:38.160 De los corpulentos, sí.
tres-patines-y-la-tremenda-corte_0000.vtt 10:21.000 10:22.000 Sí, hombre, sí.
tres-patines-y-la-tremenda-corte_0037.vtt 02:33.000 02:35.000 Sí, filantrópico, sí.
tres-patines-y-la-tremenda-corte_0037.vtt 02:33.000 02:35.000 Sí, filantrópico, sí.
tres-patines-y-la-tremenda-corte_0020.vtt 05:43.000 05:44.000 Palabra que sí.
tres-patines-y-la-tremenda-corte_0019.vtt 07:34.000 07:36.000 Medianoche con pepino, sí.
tres-patines-y-la-tremenda-corte_0009.vtt 14:28.000 14:30.000 Sí, es angina de pecho.
tres-patines-y-la-tremenda-corte_0006.vtt 04:47.000 04:48.000 Sí, vigente.
tres-patines-y-la-tremenda-corte_0031.vtt 09:19.000 09:20.000 Sí, sí.
tres-patines-y-la-tremenda-corte_0018.vtt 11:08.000 11:09.000 Sí, tú, sí, tú.

Cluster 61 with 10 elements

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0000.vtt 13:42.000 13:43.000 Pero eso lo sabe todo el mundo.
tres-patines-y-la-tremenda-corte_0009.vtt 11:38.000 11:41.000 Y que lo lleven al matadero a ver si no se pone nervioso.
tres-patines-y-la-tremenda-corte_0019.vtt 05:24.000 05:28.000 De no sé qué ley, que tampoco sé quién ha hecho una ley de esa índole.
tres-patines-y-la-tremenda-corte_0020.vtt 01:57.000 02:00.000 Vamos a ver usted la estafada, Nananina.
tres-patines-y-la-tremenda-corte_0033.vtt 09:17.000 09:19.000 A ver, vamos por parte
tres-patines-y-la-tremenda-corte_0039.vtt 04:12.600 04:13.900 Bueno, a ver, explíquemelo.
tres-patines-y-la-tremenda-corte_0039.vtt 04:34.300 04:36.000 Bueno, la cuestión del farol.
tres-patines-y-la-tremenda-corte_0040.vtt 13:14.000 13:15.000 A ver.
tres-patines-y-la-tremenda-corte_0041.vtt 01:27.120 01:28.520 A ver, déjeme ver esa letra.
tres-patines-y-la-tremenda-corte_0048.vtt 04:45.000 04:46.000 A ver.

Cluster 74 with 49 elements – showing a small sample

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0004.vtt 09:35.000 09:37.000 Sí, mamita le tiró el zapato y yo dije, ¡ay!
tres-patines-y-la-tremenda-corte_0022.vtt 01:23.000 01:24.000 ¡Presidente!
tres-patines-y-la-tremenda-corte_0028.vtt 12:09.000 12:10.000 ¡Miao!
tres-patines-y-la-tremenda-corte_0041.vtt 12:39.120 12:41.120 Ah, una gallina cayó eso ¡pam!
tres-patines-y-la-tremenda-corte_0028.vtt 11:55.000 11:56.000 Y empezó a gritar ¡Miao!
tres-patines-y-la-tremenda-corte_0042.vtt 01:25.000 01:27.000 ¡Ay, el fantasma!
tres-patines-y-la-tremenda-corte_0028.vtt 12:09.000 12:10.000 ¡Miao!
tres-patines-y-la-tremenda-corte_0006.vtt 01:51.000 01:53.000 ¡A la reja!
tres-patines-y-la-tremenda-corte_0007.vtt 02:59.000 03:00.000 ¡Silencio!
tres-patines-y-la-tremenda-corte_0004.vtt 09:35.000 09:37.000 Sí, mamita le tiró el zapato y yo dije, ¡ay!
tres-patines-y-la-tremenda-corte_0045.vtt 08:00.000 08:01.000 ¡180 días!
tres-patines-y-la-tremenda-corte_0002.vtt 11:18.000 11:19.000 ¡Tira eso!
tres-patines-y-la-tremenda-corte_0027.vtt 08:11.000 08:12.000 ¡Me morro!
tres-patines-y-la-tremenda-corte_0031.vtt 08:50.000 08:51.000 ¡Namba, qué sorpresa!
tres-patines-y-la-tremenda-corte_0004.vtt 09:35.000 09:37.000 Sí, mamita le tiró el zapato y yo dije, ¡ay!
tres-patines-y-la-tremenda-corte_0036.vtt 08:19.000 08:20.000 ¡Ah!
tres-patines-y-la-tremenda-corte_0023.vtt 08:24.600 08:25.600 ¡Y el peso de lucha!
tres-patines-y-la-tremenda-corte_0047.vtt 01:52.000 01:54.000 ¡A la vea!
tres-patines-y-la-tremenda-corte_0048.vtt 11:18.000 11:19.000 ¡Dígame!
tres-patines-y-la-tremenda-corte_0024.vtt 00:02.000 00:04.000 ¡No se olvide que tenéis que pagar mi lechona!

Cluster 83 with 14 elements

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0001.vtt 07:12.000 07:13.000 ¿A agarrarlo por qué, señor?
tres-patines-y-la-tremenda-corte_0014.vtt 14:19.000 14:21.000 No, señor. Eso es fuerza de cara.
tres-patines-y-la-tremenda-corte_0015.vtt 04:34.000 04:35.000 Oiganme, señor juez.
tres-patines-y-la-tremenda-corte_0018.vtt 01:21.000 01:23.000 Enseguida, señor juez.
tres-patines-y-la-tremenda-corte_0019.vtt 01:28.000 01:30.000 Enseguida, señor juez.
tres-patines-y-la-tremenda-corte_0020.vtt 01:37.000 01:39.000 Enseguida, señor juez.
tres-patines-y-la-tremenda-corte_0025.vtt 08:24.440 08:25.040 Mande, señor juez.
tres-patines-y-la-tremenda-corte_0025.vtt 08:30.120 08:32.520 Cuando venía del señor juez,
tres-patines-y-la-tremenda-corte_0027.vtt 00:42.000 00:43.000 Pero mire señor juez.
tres-patines-y-la-tremenda-corte_0028.vtt 00:56.000 01:02.000 Un escaparate. Pues llámelo complicado en ese escaparaticidio. Enseguida señor juez.
tres-patines-y-la-tremenda-corte_0032.vtt 01:01.800 01:07.960 en ese español y sí enseguida señor juez rude cingo caldeiro y escobiña presentes
tres-patines-y-la-tremenda-corte_0040.vtt 05:42.000 05:43.000 Claro, señor juez.
tres-patines-y-la-tremenda-corte_0045.vtt 00:44.000 00:45.000 Enseguida señor juez.
tres-patines-y-la-tremenda-corte_0049.vtt 02:07.000 02:14.000 No, señor, lo único que yo le hice a Rubesindo fue venderle 40 galones de gasolina especial para guagua.

Cluster 92 with 14 elements

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0001.vtt 12:37.000 12:38.000 De una caída, sí.
tres-patines-y-la-tremenda-corte_0005.vtt 02:27.000 02:29.000 No, pero esa sí.
tres-patines-y-la-tremenda-corte_0008.vtt 13:25.000 13:26.000 Sí, se dobló.
tres-patines-y-la-tremenda-corte_0014.vtt 12:05.000 12:07.000 El vapor, sí.
tres-patines-y-la-tremenda-corte_0018.vtt 06:18.000 06:19.000 Municipio, sí.
tres-patines-y-la-tremenda-corte_0020.vtt 09:54.000 09:55.000 Sí, mi querido y estimado Dr.
tres-patines-y-la-tremenda-corte_0028.vtt 02:41.000 02:52.000 ¿Sí? Hombre, pues si lo supieran en algún lado ya no sería secreto. Entonces nadie sabe que usted es policía. Bueno, sí, lo sabe una persona nada más.
tres-patines-y-la-tremenda-corte_0040.vtt 09:04.000 09:05.000 Sí, vale.
tres-patines-y-la-tremenda-corte_0044.vtt 04:37.000 04:38.000 Ahora, que eso sí.
tres-patines-y-la-tremenda-corte_0044.vtt 06:43.000 06:44.000 Sí, sí.
tres-patines-y-la-tremenda-corte_0044.vtt 09:31.000 09:32.000 Sí, sí.
tres-patines-y-la-tremenda-corte_0045.vtt 07:56.000 07:58.000 Sí, pero lo que no puedes comer hierba.
tres-patines-y-la-tremenda-corte_0049.vtt 12:42.000 12:44.000 De la cuenca sur, sí.
tres-patines-y-la-tremenda-corte_0050.vtt 10:56.160 10:57.160 Si está de frente a frente.

Cluster 95 with 24 elements – showing a small sample

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0009.vtt 00:00.000 00:12.000 Audiencia publica, el tremendo juez de la tremenda corte va a resolver un tremendo caso.
tres-patines-y-la-tremenda-corte_0039.vtt 10:31.400 10:35.900 Bueno, no, porque con el boca debajo los pulmones quedan apretados, tú sabes.
tres-patines-y-la-tremenda-corte_0031.vtt 07:42.000 07:44.000 Yo no tengo trapitos sucios ninguno para que se entere.
tres-patines-y-la-tremenda-corte_0031.vtt 07:42.000 07:44.000 Yo no tengo trapitos sucios ninguno para que se entere.
tres-patines-y-la-tremenda-corte_0012.vtt 11:50.960 11:52.960 ropa en la escalera de ese edificio.
tres-patines-y-la-tremenda-corte_0039.vtt 10:31.400 10:35.900 Bueno, no, porque con el boca debajo los pulmones quedan apretados, tú sabes.
tres-patines-y-la-tremenda-corte_0012.vtt 11:50.960 11:52.960 ropa en la escalera de ese edificio.
tres-patines-y-la-tremenda-corte_0023.vtt 12:07.600 12:09.600 Porque me han dicho que yo tengo condiciones para eso.
tres-patines-y-la-tremenda-corte_0023.vtt 12:07.600 12:09.600 Porque me han dicho que yo tengo condiciones para eso.
tres-patines-y-la-tremenda-corte_0035.vtt 08:06.000 08:09.000 Pero sé que se venden así porque los he comprado cuando era chiquito.
tres-patines-y-la-tremenda-corte_0045.vtt 05:14.000 05:15.000 De una mate mango.
tres-patines-y-la-tremenda-corte_0010.vtt 02:49.000 02:52.000 mamita puso una cazuela sobre la mesa del comedor.
tres-patines-y-la-tremenda-corte_0021.vtt 06:55.000 06:59.000 Sí, rudecido le dice cuál es la izquierda y entonces yo le digo cuál es la derecha.
tres-patines-y-la-tremenda-corte_0039.vtt 10:31.400 10:35.900 Bueno, no, porque con el boca debajo los pulmones quedan apretados, tú sabes.
tres-patines-y-la-tremenda-corte_0003.vtt 09:56.700 10:04.620 motoneta no a pie llevaba su cajóncito igual que el mismo el cajón del limpia
tres-patines-y-la-tremenda-corte_0036.vtt 06:40.000 06:41.000 Su mamita baila merengue.
tres-patines-y-la-tremenda-corte_0045.vtt 05:14.000 05:15.000 De una mate mango.
tres-patines-y-la-tremenda-corte_0017.vtt 11:32.000 11:38.000 Mientras en el mundo haya una ganzúa y una pata de cabra, el hijo de mamita nunca pasará hambre, para que te enteres.
tres-patines-y-la-tremenda-corte_0017.vtt 11:32.000 11:38.000 Mientras en el mundo haya una ganzúa y una pata de cabra, el hijo de mamita nunca pasará hambre, para que te enteres.
tres-patines-y-la-tremenda-corte_0036.vtt 06:40.000 06:41.000 Su mamita baila merengue.

Cluster 109 with 18 elements

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0002.vtt 13:46.000 13:53.000 Yo te dije que me esperase unas semanas hasta que yo encontrase otro terrenito vacío para mudar el chaleche.
tres-patines-y-la-tremenda-corte_0004.vtt 03:01.000 03:03.000 ¿Y entonces por qué no la suprimen, chico?
tres-patines-y-la-tremenda-corte_0007.vtt 06:48.000 06:51.000 debe al lavandero, debe al carnicero.
tres-patines-y-la-tremenda-corte_0010.vtt 05:45.000 05:46.000 ¿Y eso por qué, chico?
tres-patines-y-la-tremenda-corte_0010.vtt 11:16.000 11:19.000 que cuánto le cobraba por dar un paseo en máquina.
tres-patines-y-la-tremenda-corte_0010.vtt 14:46.000 14:48.000 Yo le dije, entonces, ¿hora y qué hora es?
tres-patines-y-la-tremenda-corte_0011.vtt 06:26.000 06:28.000 Y saliendo de San Diego de los Baños por esa vereda
tres-patines-y-la-tremenda-corte_0012.vtt 10:27.640 10:29.640 ¿Por qué? Porque cada vez que le tocan a la puerta
tres-patines-y-la-tremenda-corte_0013.vtt 13:21.000 13:25.000 En vista de eso, pues yo hablé por el revolver, todo el mundo salió corriendo.
tres-patines-y-la-tremenda-corte_0014.vtt 07:43.000 07:44.000 Bueno, por eso
tres-patines-y-la-tremenda-corte_0029.vtt 11:00.000 11:01.000 ¿Por qué, chico?
tres-patines-y-la-tremenda-corte_0031.vtt 05:54.000 05:56.000 por incitar a la autoridad a jugar al prohibido.
tres-patines-y-la-tremenda-corte_0031.vtt 10:55.000 10:56.000 Yo no entiendo ni media palabra.
tres-patines-y-la-tremenda-corte_0032.vtt 12:42.720 12:47.880 pagado por él porque 200 pesos por ese puesto no iba a encontrar yo nadie que me lo diera pero
tres-patines-y-la-tremenda-corte_0035.vtt 03:24.000 03:26.000 ¿Y entonces por qué te estoy contestando yo?
tres-patines-y-la-tremenda-corte_0041.vtt 10:46.120 10:48.120 Pero es que rudeciendo dice,
tres-patines-y-la-tremenda-corte_0043.vtt 11:57.000 12:02.000 Pues antes de irse a pelar, cuando estuvo en casa, cargó el gato todo el tiempo, oiga,
tres-patines-y-la-tremenda-corte_0047.vtt 02:28.000 02:32.000 Y cuando se enteró de que venía un ciclón se puso muy nerviosa.

Cluster 110 with 14 elements

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0002.vtt 13:53.000 13:55.000 ¿Cuántas semanas le pidió que lo esperase?
tres-patines-y-la-tremenda-corte_0011.vtt 08:25.000 08:26.000 ¿Le gusta?
tres-patines-y-la-tremenda-corte_0014.vtt 11:07.000 11:08.000 No, siempre de qué
tres-patines-y-la-tremenda-corte_0015.vtt 11:38.000 11:39.000 ¿Usted cree?
tres-patines-y-la-tremenda-corte_0016.vtt 09:07.960 09:09.360 ¿Y de lo de sudorra?
tres-patines-y-la-tremenda-corte_0019.vtt 08:33.000 08:35.000 ¿usted se quiere reír en esta
tres-patines-y-la-tremenda-corte_0037.vtt 13:29.000 13:30.000 ¿Dónde? Contésteme.
tres-patines-y-la-tremenda-corte_0039.vtt 06:20.300 06:21.100 ¿Seguro?
tres-patines-y-la-tremenda-corte_0040.vtt 07:12.000 07:13.000 ¿En vez de lo cual?
tres-patines-y-la-tremenda-corte_0042.vtt 07:24.000 07:25.000 ¿Y qué hizo usted, Albert?
tres-patines-y-la-tremenda-corte_0044.vtt 09:04.000 09:06.000 Usted tiene que pagarle su carro, ¿qué país?
tres-patines-y-la-tremenda-corte_0044.vtt 10:16.000 10:18.000 Si viene a cruzar ahora, él cerró los ojos.
tres-patines-y-la-tremenda-corte_0045.vtt 08:09.000 08:10.000 De nada.
tres-patines-y-la-tremenda-corte_0050.vtt 04:00.000 04:01.000 ¿Qué pasó?

Cluster 115 with 17 elements

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0003.vtt 00:51.560 00:54.600 y la y para el hígado no no un momento
tres-patines-y-la-tremenda-corte_0005.vtt 03:30.000 03:32.000 Sinforosa no existe.
tres-patines-y-la-tremenda-corte_0006.vtt 11:37.000 11:39.000 Por la chimenea no podemos entrar porque no cabemos.
tres-patines-y-la-tremenda-corte_0009.vtt 06:47.000 06:48.000 Momento.
tres-patines-y-la-tremenda-corte_0009.vtt 12:06.000 12:07.000 Rubesindo.
tres-patines-y-la-tremenda-corte_0011.vtt 10:38.000 10:39.000 No sé.
tres-patines-y-la-tremenda-corte_0014.vtt 10:44.000 10:45.000 No
tres-patines-y-la-tremenda-corte_0023.vtt 09:47.600 09:48.600 Que yo no enseño.
tres-patines-y-la-tremenda-corte_0028.vtt 02:34.000 02:41.000 No, porque en la jefatura no saben que yo soy policía. ¿Cómo que no lo sabes? Claro que no, no le estoy diciendo que soy un policía secreto.
tres-patines-y-la-tremenda-corte_0032.vtt 07:22.680 07:28.680 domingo y si no no trabajo pero entre miré levantarse tarde bañarme a almorzar dormir la
tres-patines-y-la-tremenda-corte_0033.vtt 06:28.000 06:29.000 No
tres-patines-y-la-tremenda-corte_0044.vtt 06:52.000 06:53.000 No debería.
tres-patines-y-la-tremenda-corte_0044.vtt 09:59.000 10:00.000 Pero no paró.
tres-patines-y-la-tremenda-corte_0046.vtt 02:52.000 02:55.000 Y no falla nunca eso no falla nunca
tres-patines-y-la-tremenda-corte_0046.vtt 09:16.000 09:18.000 No no no un pollito
tres-patines-y-la-tremenda-corte_0046.vtt 09:26.000 09:27.000 No era pollito no
tres-patines-y-la-tremenda-corte_0046.vtt 09:28.000 09:29.000 No no no

Cluster 125 with 10 elements

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0003.vtt 15:22.320 15:23.320 y comerme un potaje de garbanzos.
tres-patines-y-la-tremenda-corte_0010.vtt 08:18.000 08:22.000 Usted me tiene que pagar cuatro horas menos cinco minutos.
tres-patines-y-la-tremenda-corte_0010.vtt 12:05.000 12:08.000 yo lo afinco aquí con multas de cinco y de cinco y de cinco
tres-patines-y-la-tremenda-corte_0011.vtt 09:11.000 09:12.000 ¿Usted le invitó?
tres-patines-y-la-tremenda-corte_0017.vtt 04:21.000 04:22.000 De 8 onzas.
tres-patines-y-la-tremenda-corte_0017.vtt 04:54.000 04:57.000 Que como el valor de una libra son 16 onzas,
tres-patines-y-la-tremenda-corte_0030.vtt 11:46.440 11:48.440 y me dijo que por 50 pesos,
tres-patines-y-la-tremenda-corte_0033.vtt 05:43.000 05:44.000 Un sillón de barbero
tres-patines-y-la-tremenda-corte_0035.vtt 08:51.000 08:52.000 1918.
tres-patines-y-la-tremenda-corte_0036.vtt 08:47.000 08:48.000 Siga usted, Anamina.

Cluster 128 with 31 elements – showing a small sample

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0005.vtt 08:22.000 08:24.000 Diez pesos de multa por esa aclaración.
tres-patines-y-la-tremenda-corte_0019.vtt 09:20.000 09:22.000 Ponle veinte pesos de multa, secretario.
tres-patines-y-la-tremenda-corte_0040.vtt 06:17.000 06:19.000 No me costó veinte kilos la macha.
tres-patines-y-la-tremenda-corte_0047.vtt 04:45.000 04:48.000 Póngale otro 10 pesos de multa, secretario.
tres-patines-y-la-tremenda-corte_0017.vtt 04:24.000 04:27.000 Pongale 50 pesos de multa, rudecido, y que le decomisen la pesa.
tres-patines-y-la-tremenda-corte_0040.vtt 06:17.000 06:19.000 No me costó veinte kilos la macha.
tres-patines-y-la-tremenda-corte_0048.vtt 10:17.000 10:19.000 Póngale cinco pesos más de multa a esta extranjera.
tres-patines-y-la-tremenda-corte_0045.vtt 07:53.000 07:54.000 Veinte pesos más de multa.
tres-patines-y-la-tremenda-corte_0033.vtt 03:24.000 03:27.000 10 pesos de multa por insistir
tres-patines-y-la-tremenda-corte_0023.vtt 12:51.600 12:54.600 fuimos a ver a tres patines para que nos los enseñara los dos.
tres-patines-y-la-tremenda-corte_0043.vtt 09:58.000 10:00.000 Cincuenta pesos de multa.
tres-patines-y-la-tremenda-corte_0050.vtt 08:19.000 08:20.000 Póngale 50 más.
tres-patines-y-la-tremenda-corte_0019.vtt 11:36.000 11:38.000 Póngale 23 pesos de multa, secretario.
tres-patines-y-la-tremenda-corte_0019.vtt 11:36.000 11:38.000 Póngale 23 pesos de multa, secretario.
tres-patines-y-la-tremenda-corte_0043.vtt 09:58.000 10:00.000 Cincuenta pesos de multa.
tres-patines-y-la-tremenda-corte_0017.vtt 04:24.000 04:27.000 Pongale 50 pesos de multa, rudecido, y que le decomisen la pesa.
tres-patines-y-la-tremenda-corte_0005.vtt 01:38.000 01:39.000 Póngale dos pesos de multa.
tres-patines-y-la-tremenda-corte_0047.vtt 04:45.000 04:48.000 Póngale otro 10 pesos de multa, secretario.
tres-patines-y-la-tremenda-corte_0023.vtt 12:51.600 12:54.600 fuimos a ver a tres patines para que nos los enseñara los dos.
tres-patines-y-la-tremenda-corte_0011.vtt 06:07.000 06:09.000 Pongale diez pesos de multa.

Cluster 129 with 12 elements

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0004.vtt 08:10.000 08:11.000 Palabra que no, chico.
tres-patines-y-la-tremenda-corte_0005.vtt 07:33.000 07:34.000 Pues no se me equivoca más.
tres-patines-y-la-tremenda-corte_0005.vtt 08:32.000 08:33.000 Me lo pusiste, chico.
tres-patines-y-la-tremenda-corte_0005.vtt 14:52.000 14:54.000 carne a la dama, chico.
tres-patines-y-la-tremenda-corte_0008.vtt 12:08.000 12:10.000 En el centro gallego, chico.
tres-patines-y-la-tremenda-corte_0013.vtt 12:59.000 13:01.000 Chico, oye, ¿se permite qué, chico?
tres-patines-y-la-tremenda-corte_0016.vtt 05:32.560 05:34.760 No seas pócrita, chico.
tres-patines-y-la-tremenda-corte_0020.vtt 08:53.000 08:54.000 Hombre, en el comentario, chico.
tres-patines-y-la-tremenda-corte_0021.vtt 04:39.000 04:41.000 Óyeme, de ninguna manera, chico.
tres-patines-y-la-tremenda-corte_0033.vtt 11:54.000 11:56.000 Sino los peludos que van a pelarse, chico
tres-patines-y-la-tremenda-corte_0042.vtt 01:34.000 01:36.500 No, chico. Yo soy el acusado nomás.
tres-patines-y-la-tremenda-corte_0042.vtt 09:14.000 09:15.000 También, chico.

Cluster 149 with 14 elements

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0007.vtt 00:42.000 00:43.000 Primero me pongo una coraza.
tres-patines-y-la-tremenda-corte_0013.vtt 04:45.000 04:53.000 Sí, yo le dije que pusiéramos uno de esos vestidos en la viriera con un letrerito que dijera, lo mejor en encaje con cola.
tres-patines-y-la-tremenda-corte_0020.vtt 02:48.000 02:50.000 Me dijo usted que estaba colocada en casa de un médico.
tres-patines-y-la-tremenda-corte_0025.vtt 04:46.520 04:50.240 Nada, pues que ahora quedó tan apeñuscado allá adentro
tres-patines-y-la-tremenda-corte_0026.vtt 13:23.000 13:25.000 se despidió de nosotros,
tres-patines-y-la-tremenda-corte_0030.vtt 05:26.440 05:28.440 en el transcurso del cual
tres-patines-y-la-tremenda-corte_0030.vtt 13:02.440 13:04.440 O sea que mamita conseguía
tres-patines-y-la-tremenda-corte_0040.vtt 00:45.000 00:52.000 Que le dijera que sí, que está dispuesta a ir al cine con usted, pero acompañada por su papá y su mamá.
tres-patines-y-la-tremenda-corte_0041.vtt 07:38.120 07:40.120 que traía acusado a ese sujeto.
tres-patines-y-la-tremenda-corte_0044.vtt 02:19.000 02:22.000 El día ese yo salí fatal del paradero, ¿oíste?
tres-patines-y-la-tremenda-corte_0045.vtt 09:52.000 09:55.000 No, señora, yo no ni me ocupé más de las reses para nada.
tres-patines-y-la-tremenda-corte_0049.vtt 12:44.000 12:47.000 Bueno, pues agua lo es de todas maneras, ¿me entiende?
tres-patines-y-la-tremenda-corte_0050.vtt 11:47.920 11:52.120 patines y en dos meses nada más que estuvieron en la finca me acabaron con ella.
tres-patines-y-la-tremenda-corte_0050.vtt 13:14.520 13:18.800 El ñame y los buñatos, eso, el melón y el tronco de yuca honoris causa, ese que ustedes

Cluster 155 with 16 elements

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0008.vtt 05:33.000 05:35.000 Vaya, por Dios.
tres-patines-y-la-tremenda-corte_0013.vtt 11:33.000 11:35.000 Anote eso, secretario, de modo...
tres-patines-y-la-tremenda-corte_0015.vtt 03:25.000 03:28.000 Pague en efectivo, vaya a la cárcel.
tres-patines-y-la-tremenda-corte_0017.vtt 04:43.000 04:44.000 Verá usted, doctor.
tres-patines-y-la-tremenda-corte_0018.vtt 07:35.000 07:36.000 Hombre, por Dios.
tres-patines-y-la-tremenda-corte_0030.vtt 03:55.240 03:57.240 No se preocupe, Rudecindo, que se le hará justicia.
tres-patines-y-la-tremenda-corte_0033.vtt 10:31.000 10:32.000 Dito Dios
tres-patines-y-la-tremenda-corte_0035.vtt 02:18.000 02:19.000 para que vaya comiendo.
tres-patines-y-la-tremenda-corte_0038.vtt 03:53.000 03:56.000 Hombre, por Dios, parece hasta mentira
tres-patines-y-la-tremenda-corte_0038.vtt 04:59.000 05:01.000 Hombre, por Dios
tres-patines-y-la-tremenda-corte_0039.vtt 04:08.900 04:09.900 ¿Vista desde dónde?
tres-patines-y-la-tremenda-corte_0039.vtt 13:04.400 13:06.400 No, Trespatines, hombre.
tres-patines-y-la-tremenda-corte_0042.vtt 10:22.000 10:25.000 De Máximo Plan.
tres-patines-y-la-tremenda-corte_0047.vtt 00:39.000 00:41.000 Vaya, por Dios lo siento señor juez.
tres-patines-y-la-tremenda-corte_0048.vtt 09:00.000 09:01.000 Pero...
tres-patines-y-la-tremenda-corte_0050.vtt 00:46.000 00:48.000 Vaya por Dios, pobrecita ella.

Cluster 170 with 43 elements – showing a small sample

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0034.vtt 01:51.000 01:52.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 01:42.000 01:43.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 01:42.000 01:43.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 02:15.000 02:16.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 04:08.000 04:09.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 02:16.000 02:17.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 00:31.000 00:32.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 00:21.000 00:22.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 02:16.000 02:17.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 02:16.000 02:17.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 03:51.000 03:52.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 01:14.000 01:15.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 02:08.000 02:09.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 02:33.000 02:34.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 03:51.000 03:52.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0014.vtt 10:40.000 10:41.000 Lo denunciaron
tres-patines-y-la-tremenda-corte_0034.vtt 04:20.000 04:21.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 03:23.000 03:24.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 04:20.000 04:21.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 03:02.000 03:03.000 ¿Cómo lo hicieron?

Cluster 174 with 17 elements

idfile name tbegin tend caption
tres-patines-y-la-tremenda-corte_0034.vtt 00:23.000 00:24.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 00:33.000 00:34.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 00:49.000 00:50.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 00:51.000 00:52.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 00:52.000 00:53.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 01:18.000 01:19.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 01:22.000 01:23.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 02:21.000 02:22.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 02:24.000 02:25.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 02:50.000 02:51.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 03:01.000 03:02.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 03:13.000 03:14.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 03:14.000 03:15.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 03:46.000 03:47.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 04:10.000 04:11.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 04:14.000 04:15.000 ¿Cómo lo hicieron?
tres-patines-y-la-tremenda-corte_0034.vtt 04:26.000 04:27.000 ¿Cómo lo hicieron?

Environment and dependencies

Julia Version 1.10.10
Commit 95f30e51f41 (2025-06-27 09:51 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 64 × Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, cascadelake)
Threads: 64 default, 0 interactive, 32 GC (on 64 virtual cores)
Environment:
  JULIA_NUM_THREADS = auto
  JULIA_PROJECT = .
  JULIA_LOAD_PATH = @:@stdlib
Status `~/Research/SimilaritySearchDemos/Project.toml`
  [aaaa29a8] Clustering v0.15.8
  [944b1d66] CodecZlib v0.7.8
  [a93c6f00] DataFrames v1.8.0
  [c5bfea45] Embeddings v0.4.6
  [f67ccb44] HDF5 v0.17.2
  [b20bd276] InvertedFiles v0.8.1
  [682c06a0] JSON v0.21.4
  [23fbe1c1] Latexify v0.16.10
  [eb30cadb] MLDatasets v0.7.18
  [06eb3307] ManifoldLearning v0.9.0
⌃ [ca7969ec] PlotlyLight v0.11.0
  [91a5bcdd] Plots v1.40.20
  [27ebfcd6] Primes v0.5.7
  [ca7ab67e] SimSearchManifoldLearning v0.3.1
  [053f045d] SimilaritySearch v0.13.0
⌅ [2913bbd2] StatsBase v0.33.21
  [f3b207a7] StatsPlots v0.15.7
  [7f6f6c8a] TextSearch v0.19.6
Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated`