尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Explore words spoken in movies: per-film word frequencies and trends with year/country/genre filters
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Live: https://moviewords.org — explore the words spoken in
two corpora: 25,515 English-original films (default) and 51,624 films of
every original language (translated subtitles, clearly labeled): what any
movie actually says, how words rise and fall across decades, and what makes a
film, a decade, or a genre sound like itself.檢視完整 README ↗Live: https://moviewords.org — explore the words spoken in two corpora: 34,556 English-original films (default) and 64,046 films of every original language (translated subtitles, clearly labeled): what any movie actually says, how words rise and fall across decades, and what makes a film, a decade, or a genre sound like itself.
Every film's dialogue (from the OPUS OpenSubtitles corpus, subtitles by OpenSubtitles.org) is reduced to a bag of words and compared against the whole corpus with log-odds — which is how you learn that The Godfather Part II's signature words are "corleone, fredo, roth, michael, vito", Horror's are "help, god, please, her, house", and the film that says "dude" the most is, of course, The Big Lebowski (120×).
Only derived word counts are published — no subtitle text is redistributed.
| Path | What it is |
|---|---|
pipeline/ | Python batch pipeline: OPUS + IMDb + TMDB → the published dataset. Runbook in pipeline/README.md |
app/ | The website: Vite + React + Tailwind + DuckDB-WASM, hosted on Cloudflare Pages. Dev guide in app/README.md |
docs/ARCHITECTURE.md | Start here to understand or reproduce the system — architecture, methodology, dataset contract, decisions, toolchain |
docs/FAQ.md | Methodology, limitations, and licensing questions — subtitles vs scripts, corpus bias, copyright position, poster policy |
docs/DATA-QUALITY.md | How bad subtitle files were found and handled — wrong films, commentary tracks, machine-translated and auto-captioned subtitles, and why old films "said" words they never said |
docs/superpowers/ | Original design spec and implementation plan |
docs/sessions/ | Session records (how this was actually built, with gotchas) |
A batch pipeline (Python/DuckDB, fully resumable via per-movie caches) turns the
34GB OPUS corpus into ~2GB of Parquet + JSON + posters on a public Cloudflare R2
bucket. The site is a static SPA on Cloudflare Pages that reads pre-baked JSON
for hot paths and runs real SQL in the browser (DuckDB-WASM over HTTP range
requests) for everything interactive. There are no servers and hosting is free.
Details, decisions, and performance lessons: docs/ARCHITECTURE.md.
pipeline/README.md. Needs
~60GB disk, a free TMDB API key
(TMDB_API_KEY or TMDB_API_TOKEN), and a few hours (we used a throwaway
GCP e2-highmem-4; a laptop works too). A 610-film starter dataset needing
neither is one command: uv run python scripts/build_demo_dataset.py.pipeline/scripts/upload_r2.sh).cd app && npm install && npm run dev, pointing
VITE_DATA_BASE at your data host. Deploy anywhere static
(wrangler pages deploy dist --project-name moviewords).The full published dataset is five Parquet files per corpus on a public bucket
(the all-films corpus under all/ adds a sixth, word_year_lang.parquet) —
download them, or point DuckDB straight at the URLs. Fuller guide with more
example queries: docs/DATA.md.
| File | Size | Contents |
|---|---|---|
| movies.parquet | 0.8 MB | one row per film: title, year, genres, rating, word totals |
| words_by_movie/data.parquet | 88 MB | (imdb_id, word, count), sorted by film |
| words_by_word/data.parquet | 93 MB | same rows, sorted by word |
| word_year.parquet | 6 MB | (word, year, count, movie_count) for trends |
| word_meta.parquet | 3.5 MB | per-word commonness (zipf), part of speech, distinctiveness |
duckdb -c "SELECT title, year, words_per_minute FROM 'https://data.moviewords.org/movies.parquet' ORDER BY words_per_minute DESC LIMIT 10"
Full schema: the dataset contract. Got an analysis idea we haven't thought of? Email [email protected].
Code: MIT (LICENSE). Published dataset: derived word counts, CC BY-NC-SA 4.0 (LICENSE-DATA.md explains why - IMDb's non-commercial dataset terms set the floor). Built from: OPUS OpenSubtitles v2024 (Lison & Tiedemann, 2016) with subtitles from OpenSubtitles.org; IMDb non-commercial datasets (information courtesy of IMDb, used with permission); TMDB (metadata & posters — this product uses the TMDB API but is not endorsed or certified by TMDB). Non-commercial project.
Questions about copyright, methodology, or bias - see the FAQ. Rights holders: takedown requests to [email protected] are honored promptly.