hermatch 開源工具實測:一組擇偶條件把百萬人篩到剩多少人

hermatch 是一個開源網頁工具,把 100 萬筆中國大陸男性合成資料放進瀏覽器,讓你拉條件看每百萬人有多少個符合。實測六個條件連乘後只剩 3,138 人;其中顏值、幽默、身材三個滑桿過濾的是亂數產生器,引用它的數字前要先分清哪一半接真實統計。

用 AI 摘要這篇文章:

先講結論。hermatch 這個開源網頁工具,網站標題叫「中國女性擇偶資料實驗室」,打開網頁、拉出一組擇偶條件,它就告訴你每一百萬名男性裡有多少人符合。它值得打開玩五分鐘,因為它把機率裡最反直覺的一件事做成了可以動手的沙盒:條件連乘。但它的數字要拆開看,十八個可調維度裡,年齡、身高、學歷、收入這些維度背後有真實統計骨架;顏值、幽默、身材這三個滑桿背後是亂數產生器。把它當機率教材,它很好用;把它的輸出當成擇偶市場調查轉傳,就是誤用。

這些數字我自己重算過。我實際打開它的線上版本操作、截圖,也把專案使用的同一份一百萬筆資料抓下來,用原始碼裡同一套過濾規則在本機重算,兩邊數字完全一致,以下逐段說明。

首屏的 37.78%,其實只是在算年齡佔比

打開 hermatch 的網頁版,預設狀態的首屏寫著:每一百萬名中國大陸男性中,377,816 人符合,佔比 37.78%,換算全國約 2.64 億人。這個數字看起來像某種「符合率」,但把它拆開就會發現,它其實只是 18 到 45 歲男性佔全年齡樣本的比例。預設條件裡的身高下限 150 公分,在成年人資料裡一個人都排除不掉;學歷、收入、資產三個下拉選單都停在「不限」;顏值等四個評分滑桿都停在最低檔;九組多選勾選框全部全選。我把這份資料的 18 到 45 歲列數直接統計出來,就是 377,816 筆,與首屏完全相同,一筆不差。也就是說,你什麼條件都沒設的時候,工具算給你的「符合人數」,就只是某個年齡層的人口數。

還有一個更基本的分母問題:這份樣本覆蓋 0 到 99 歲,其中約 21%、將近 21 萬筆是未滿 18 歲的未成年人,連 6 歲、9 歲的列都自帶顏值與幽默分數。「每一百萬男性」這句話的分母,包含嬰兒與國小學生。工具其實有自覺,在第二張卡片提供年齡段內的佔比,把分母換成你所選的年齡層。認真讀數字的人要看的是那一張,首屏那一張只是換算全家人口的粗略版本。

hermatch 網頁版預設狀態,顯示每一百萬名男性中 377,816 人符合、佔比 37.78%、全國約 2.64 億人Pin
hermatch 預設狀態的首屏,37.78% 其實等同 18 到 45 歲男性佔全年齡樣本的比例,資料來源:hermatch-svelte.vercel.app(2026-08-22)

六個條件連乘,每百萬人剩不到四千

真正有趣的部分從你開始拉條件那一刻出現。我在網頁版實測一組聽起來完全不苛刻的條件:24 到 34 歲、身高 175 公分起跳、大學以上學歷、年收入 15 萬人民幣以上、未婚、不吸菸。結果每一百萬人剩 3,138 人,佔比 0.31%,換算全國約 220 萬人。若把分母換成 24 到 34 歲本身,段內佔比 2.05%,也就是每五十位適齡男性裡大約一位同時過六關。年收入 15 萬人民幣換算新台幣約六十多萬元,在台灣的工程師與專業職涯裡是常見水位,對照它在中國大陸年齡段內 26.4% 的通過率,這個條件本身就已經先刷掉四分之三的人。

hermatch 設定 24 到 34 歲、175 公分、大學以上、年收 15 萬人民幣、未婚、不吸菸後,顯示每百萬剩 3,138 人、佔比 0.31%Pin
六個條件連乘後的實測結果:每百萬人剩 3,138 人,段內佔比 2.05%,資料來源:hermatch-svelte.vercel.app(2026-08-22)

把六道關卡逐層拆開,衰減的速度就看得很清楚。以整整一百萬筆樣本起算:限 24 到 34 歲剩 153,116 筆;加身高 175 以上剩 66,032;加大學以上剩 12,730;加年收入 15 萬人民幣以上剩 6,156;加未婚剩 4,543;再加不吸菸,剩 3,138。單看每一關在 24 到 34 歲段內的通過率,其實都很溫和:身高那一關段內 43.1% 的人過關、大學以上 19.1%、年收入 15 萬以上 26.4%、未婚 71.5%、不吸菸 69.8%。沒有一關是刁難,但五個溫和的比例乘起來,就是剩下百分之二上下的結局。這就是條件連乘:單一條件的寬鬆,騙不過乘法的累積。

單一滑桿的破壞力也可以單獨量。同樣那組條件,把身高門檻從 175 拉到 180,人數立刻從 3,138 掉到 1,205,一個五公分的調整砍掉六成。反過來放掉身高條件,人數會翻倍有餘,回到七千出頭。玩它的樂趣就在這裡:每一個「應該不難吧」的直覺,都會被畫面上的數字直接修正。

另一個容易被忽略的細節藏在六個條件之間。如果六個條件彼此獨立,按上面那些段內比例直接相乘,一百萬人只會剩不到一千七百人;實際剩 3,138 人,將近兩倍。原因是產生這份資料的程式把變數串在一起:學歷影響收入、收入影響房產,學歷高的樣本收入普遍也高,於是「大學以上」和「年收 15 萬以上」這兩個條件不會重複扣兩次懲罰。這份合成資料在這一層是有設計的,它模擬的正是真實人口裡變數互相牽動的結構。

三個評分滑桿後面是亂數,第四個是開發者的公式

hermatch 最吸引眼球的維度,恰恰是它最不能當真的維度。顏值、幽默感、身材三個評分,產生的方式是把一百萬筆資料直接用亂數平均撒進 1 到 5 分五個等級。我把 CSV 檔案實際統計一遍:五個等級分別是 200,012、199,799、200,622、200,113、199,454 筆,每級正好五分之一,是標準的均勻分佈,與產生程式裡那行隨機整數指令對得上。換句話說,把顏值滑桿拉到 5,你是在從一頂帽子裡抽走隨機五分之一的籤,與任何人的長相無關。真實世界裡的顏值分佈長什麼樣,沒有人量得出來,開發者也沒有假裝量過,他就是擲了一次很公平的骰子。

第四個評分「性吸引力」不是亂數,但也稱不上測量。它是一條開發者自己編的加權公式:顏值佔 0.3、身高因子佔 0.3、身材佔 0.2、幽默佔 0.2,其中身高 180 公分以上乘上 1.5 倍的加成、175 到 180 乘 1.3、170 到 175 不加不減、165 到 170 打九折、165 以下打八折;年齡落在 25 到 35 歲再乘 1.2 倍,35 到 45 歲乘 1.1。這些權重與係數是開發者的先驗假設,寫在產生資料的 Python 程式碼裡,每一段都附了註解。你可以同意或不同意「身高 180 該乘 1.5」,但那是一個立場,一個人的立場,換一個開發者就會得到另一組數字。更何況公式末端還加了一段正負 0.3 分的隨機抖動才收斂成分數。更微妙的是,這條公式吃的原料本身就是前面那三個亂數分數,等於在骰子上面又疊了一層個人意見。

對照之下,人口結構那半邊就認真得多。年齡分佈基於 2022 年的全國人口抽樣調查,開發者在資料專案的說明文件裡,把 0 到 4 歲 32,589 人、30 到 34 歲 60,488 人、每個年齡段的實際人數一條條列表;學歷依賴年齡與家鄉、收入依賴年齡與學歷、房產依賴年齡、收入與居住地、資產同時吃四個變數,整條條件機率的生產線攤在文件與程式碼裡,任何人都能檢查。開發者自己也寫得明白:所有變數的分佈都「基於實際統計資料或合理假設」,後四個字是關鍵;某些驗證「確實沒做」,因為那重點不在那裡。一個維度能不能引用,先看它屬於哪一邊,這個動作跟之前實測過的 AI 交易模擬器 裡行情真、部位假的兩層結構是同一回事:先分清哪一半是真的,再決定信多少。

一個 Svelte 檔、一份 CSV、兩個資料請求

工程面倒是乾淨得少見。整個互動邏輯裝在一個 346 行的 Svelte 元件裡,資料是倉庫裡一份 38.8MB 的 CSV 檔,網頁打開後只向自己的資料路徑請求 mappings.json 與 hermatch.csv 兩個檔案,index.html 裡沒有任何第三方腳本、沒有外部字型、沒有統計追蹤。你拉的條件全部留在瀏覽器裡算:不必註冊帳號,後端根本不存在,資料哪裡也不去,這一點從原始碼就能確認,不靠站方承諾。載入也不慢,我這次實測從開頁到首屏數字出現大約一秒半;不過在意流量的人要知道,瀏覽器拿的是整份百萬列資料,不是只取回查詢結果。滑桿每動一下,它就把一百萬列重掃一遍,桌機上完全無感。附帶一個原始碼與依賴清單對不起來的小發現:package.json 宣告了 d3 與 papaparse 這類函式庫,但元件裡一行都沒引用,CSV 解析是手寫的字串分割,照樣跑得動,只是宣告了沒用的依賴。

介面上有個小陷阱順道一提:身高滑桿的上限標到 200 公分,但資料裡的最大值其實是 192 公分,193 以上拉的是空氣;下限 150 公分則如前述,對成年人毫無作用。年齡滑桿倒是真的可以拉到 0 歲,把分母放大到整個人口樣本,這正好解釋了首屏那個 37.78% 的來歷。

停在 2025 年 10 月:禁商用授權與一串沒下文的建議

專案的時間軸很短。介面倉庫 2025 年 9 月 22 日建立,10 月 22 日加上授權宣告後就沒有再推送,三個開著的 issue 與一個部署到 GitHub Pages 的 PR 都沒有下文:分享截圖與男性版本兩個建議,開發者各回了一句話之後就沒有實作,常住地與戶籍地分開篩的建議則無人回應。更有意思的是人氣分佈,資料集倉庫拿到 117 顆星,介面倉庫 77 顆,真正被社群拿去用的是那份一百萬筆的資料,介面反而像它的展示櫥窗。資料集倉庫還提供 Parquet 格式,做資料分析的人可以直接取用,不必跟著介面的十八個維度走。

開發者在 README 放了一段對批評者的回應,起因是這個專案在論壇上引發了不少爭執;他的立場一句話總結:這是興趣實驗,嚴謹度有邊界,覺得不夠好請自己做一個更好的。這種態度放在會被拿去轉傳截圖的工具上,其實是給使用者的提醒:作者自己都沒把輸出當研究成果,你更不該。

授權要特別留意。兩個倉庫(介面與資料集)都採 CC BY-NC-SA 4.0,翻成白話:可以轉載、可以改造,但要署名、禁止商用、改完要用同一套條款授權。授權條款寫在 README 裡,倉庫裡沒有獨立的授權檔,宣告本身倒是很明確。想把這套介面或這份資料 fork 去做付費產品的人,這條線不能踩。

把它當機率沙盒玩,五分鐘換一個直覺

把使用場景拉回台灣。這個工具的母體是中國大陸男性、收入單位是人民幣,數字本身對台灣的擇偶情境沒有直接解釋力。它真正能帶走的是那個五分鐘的體感:一組各自聽起來合理的條件,乘起來會把一百萬人篩到剩三千。下次看到「百人中只有幾人符合」這類說法,你會知道先問三件事:分母是誰、條件有幾個、每個條件的通過率是多少。這跟 理財模擬器 要先把模型假設攤開才準讀、抽獎轉盤 要把隨機來源看清楚才準用,是同一種資料素養。

引用它的數字前,我的判斷準則只有一條:先看那個維度接的是統計還是亂數。年齡、學歷、收入這一側的數字,可以當作人口結構的粗略參考;顏值、幽默、身材、性吸引力這一側,連參考價值都沒有,它們是骰子。開發者把兩側放在同一個介面裡,沒有分色標示,這是這個實驗作品最大的閱讀陷阱,看懂這一點,它就是一個誠實又好玩的機率沙盒。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 964

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...