機器學習技術打卦,為寶寶起個好名字

2021-01-12 科技行者

小時候,我特別討厭自己的名字——Dale,大家聽到這個名字,腦海裡首先浮現的是哪些形象?我自己最先想到的,總是《山丘之王》電影中的Dale Gribble以及納斯卡車手Dale Earnhardt Jr.。

這些Dale都跟我所憧憬的自我形象完全不符。我更喜歡Sailor Moon「水冰月」這個名字。

另外,我最討厭的是Dale所表現出的中性感——男生裡叫Dale的特別多,但像我這樣的女性「Dale」就相當罕見了。這名字怎麼來的?每當我問起父母,他們的回答永遠是:

A. 名字比較中性的女生更有可能獲得成功。

B. 他們認識了一個特別時髦的朋友,人家的女兒也叫Dale,太可愛了!

好吧,在成年之後,我確實發現這個中性化的名字讓自己的簡歷、GitHub乃至郵件籤名裡得到了不少好處。

但拋開性別偏見,更值得討論的深層問題是,名字是否會在潛移默化中引導人們傾向於選擇與之相符的工作或者生活方式?如果答案是肯定的,那麼起名這事學問可就太大了,甚至會影響孩子的一生。我可不想把這麼重要的決定交給個人品味、運氣或者當時的潮流。於是乎,我希望機器學習能幫助我解決這個難題!

在本文中,我們將了解如何使用機器學習技術開發一款嬰兒起名器(更準確地講,其實是款預測器),能夠根據對於新生兒的描述返回合適的名字,例如:

我的孩子出生在新澤西州,她未來會成為谷歌公司的軟體開發員,喜歡騎自行車和喝咖啡。

以此為基礎,模型會返回一組姓名,並按概率進行排序:

Name: linda Score: 0.04895663261413574

Name: kathleen Score: 0.0423438735306263

Name: suzanne Score: 0.03537878766655922

Name: catherine Score: 0.030525485053658485

...

所以從理論上講,我本來應該叫Linda,但相比之下,現在我感覺Dale好像更好一點。

好了,別對結果太當真,這裡頭有明顯的偏見成分,更像是那種星座玄學。雖然如此,第一個由AI起名的嬰兒,聽起來是不是還蠻酷的?

數據集

雖然這裡說的是創建起名器,但它在本質上就是個姓名預測器。我的基本思路就是找到大量名人的傳記性表述,屏蔽掉他們的真實名字,然後創建模型來正確預測出這些被屏蔽的名字。

好消息是,我在David Grangier的Github repo中找到了wikipedia-biography-dataset數據集,其中包含維基百科中728321條名人記錄的摘要段落與大量元數據。

相信大家都知道,直接從維基百科上提取的數據集有著嚴重的選擇性偏見——因為其中只有15%的條目為女性,而且非白人條目的比例也更低。再有,在維基百科上有記錄的人們往往年紀更大,畢竟都是些上歲數的名人嘛。

為了解決這個問題,特別是保證生成器能儘量提供符合當下審美的名字,我下載了人口普查報告中最受歡迎的新生兒名字,同時縮小了維基百科數據集的規模——即流行名字與維基百科內名人名字的交集。另外,我只保留了至少有50位名人取過的名字,最終得到了764個名字,其中大部分是男名。

在數據集裡,最受歡迎的是「John」,在維基百科上有10092條記錄。其次是William、David、James、George以及一大堆同樣來自聖經的男性名字。人氣最低的名字(我也保留了50個例子)則有Clark、Logan等等。為了解決這種嚴重偏見,我再次對數據集進行下採樣,為每個名字隨機選擇了100條對應的名人記錄。

模型訓練

在數據樣本整理完成之後,我決定訓練一套模型,根據維基百科中的摘要段落讓模型結合人物描述生成推薦名字。

下面來看維基百科中常見的名人介紹形式:

Dale Alvin Gribble,福克斯動畫連續劇《山丘之王》中的虛構人物,由Johnny Hardwick配音、Stephen Root飾演,初次試鏡演員為Daniel Stern。Dale Gribble是革命性的「口袋揚沙」自衛術的發明者,賞金獵人,Daletech所有者,喜歡吸菸,痴迷槍枝,同時也是各種陰謀論與都市傳奇的狂熱信徒。

為了防止模型作弊,我把實例中的名字與姓氏替換成了空白行「__」,所以上述簡介就變成了:

__ Alvin __ ,福克斯動畫連續劇《山丘之王》中的虛構人物…

這就是模型的輸入數據,而其對應的輸出標籤為「Dale」。

在數據集準備就緒之後,我開始著手構建深度學習語言庫。我可以從多種方法中做出選擇(例如使用TensorFlow),但這裡我使用了AutoML Natural Language。這是一種無代碼方法,可構建用於文本分析的深度神經網絡。

我將數據集上傳至AutoML,由其將數據集自動拆分為36497個訓練示例,4570個驗證示例,以及4570個測試示例:

雖然我只打算刪除名字和姓氏,但也有不少中間名神秘失蹤了。

為了訓練模型,我訪問Train選項卡,並點擊Start Training。在四個小時之後,訓練宣告完成。

那麼,我的這款起名器到底表現如何?

有過建模經驗的朋友們,肯定知道評估質量的常規指標就是準確率與召回率。我這套模型的準確率為65.7%,召回率為2%。

但對於一款起名器來說,這些指標並不能真正說明問題。由於數據非常複雜,因此無法根據一個人的生活經歷找到「正確答案」。另外,姓名還具有很大的隨機性,所以任何模型都不可能做出真正準確的預測。

我的目標也並不是創建一套能夠100%準確預測人名的模型,而只是想試著創建一種能夠理解人名及其意義的模型。

對模型學習到的知識進行深入探究的一種可行方法,在於查看名為混淆矩陣的表。該表用於指示模型所犯錯誤的具體類型。我們可以藉此進行調試,或者快速實現完整性檢查。

在Evaluate選項卡中,AutoML提供現成的混淆矩陣。如下圖所示,僅為其中的一角:

在此表中,行標題為**True labes**,列標題則為**Predicted labels**。這些行表示某人的真實名字,而列則代表模型為該人預測出的名字。

例如,在標有「ahmad」的行中,我們看到一個淡藍色的框,標有「13%」。這意味著我們的數據集中,所有名為Ahmad的條目中,有13%的比例被我們的模型正確標記為「ahmad」。這時向右側框看去,在真名為「ahmad」的所有條目中,有25%被錯誤標記成了「ahmed」。另外有13%的條目被錯誤標記為「alec」。

儘管這些標籤出現了技術意義上的錯誤,但由此推斷,模型可能確實掌握了關於起名的一點小訣竅,因為「ahmad」與「ahmed」已經非常相近。Alec也類似,該模型在25%的情況下把Alecs標記為「alexander」,在現實生活中,「alec」與「alexander」確實沒多大區別。

運行健全性檢查

接下來,我打算看看這套模型能不能理解關於起名的基本統計規則。例如,如果我把某人形容為「她」,那麼模型能不能成功給出一個女名?

例如,「她喜歡美食」,那麼模型給出的推薦名稱為「Frances」、「Dorothy」以及「Nina」,後面幾個都是女性專用名,看起來好像不錯。

對於「他喜歡美食」,模型給出的推薦名包括「Gilbert」、「Eugene」以及「Elmer」。看來,模型似乎確實有了性別區分的概念。

下面,我們再來看實際測試過的其他幾項測試輸入與對應結果。

「他出生在新澤西州。」 — Gilbert

「她出生在新澤西州。」 — Frances

「他出生在墨西哥。」 — Armando

「她出生在墨西哥。」 — Irene

「他出生在法國。」 — Gilbert

「她出生在法國。」 — Edith

「他出生在日本。」 — Gilbert

「她出生在日本。」 — Frances

看來模型已經摸清了世界各地的起名傾向,這一點給我留下了深刻印象。但是,模型似乎很難弄清亞洲國家更喜歡哪些英文名,因此總是返回少量特別安全的名字(Gilbert與Frances)。這說明使用的訓練數據集不具備充分的全局多樣性。

模型偏見

最後,我們要對模型偏見進行測試。大家可能知道,我們往往會在不經意間創建出存在嚴重偏見、種族主義傾向、性別歧視或者野蠻暴力問題的模型,這主要是因為其中使用的訓練數據集無法正確反映結果所指向的人群。因為維基百科的數據也有同樣的問題,所以我知道數據集中的男名要比女名多。

我還意識到模型應該會反映出訓練數據中的某些性別偏見問題——例如傾向於認為電腦程式是男性,而護士是女性。下面看看我的推理是否正確:

「TA將成為電腦程式員。」 — Joseph

「TA將成為護士。」 — Frances

「TA將成為醫生。」 — Albert

「TA將成為太空人。」 — Raymond

「TA將成為小說家。」 — Robert

「TA將成為家長。」 — Jose

「TA將成為模特。」 — Betty

好吧,這套模型似乎確實掌握了職業崗位中的傳統性別傾向,更讓我驚訝的是,它為「家長」指定了一個男性名字(Jose)。

總結來看,我的模型似乎確實在起名這方面學到了不少,但又跟我的期望不太一樣。所以我的下一代該叫什麼名字好呢……要不,乾脆叫Dale Jr.?

相關焦點

  • 請您給小羊寶寶起個好名字 - 山西晚報數字報
    本報6月29日訊(記者 李飛飛)今日,本報《我省首例體細胞克隆羊誕生雙胞胎小羊沒爸卻有三個媽》稿件見報後,不少讀者在關注克隆羊寶寶的同時,提出想給它們取個有紀念意義且好聽的名字,得知此事後,「呂梁黑山羊體細胞克隆技術」課題組決定委託本報面向社會為雙胞胎克隆羊寶寶徵集名字,您有什麼好的建議,從即日起至7月9日,可以通過微信公眾號「山西頭條」參與。
  • 2021年男寶寶起一個寓意好的名字
    你是否還在糾結如何為2021年男寶寶起一個寓意好的名字呢?那這時大家不妨參考這篇文章2021年男寶寶起名字大全寓意好內容,一同了解如何給2021年男寶寶起寓意好的名字。名字是由多個漢字組成,因此大家在注重寓意內涵同時,還應注重字的字形、字音等方面特點。
  • 為孩子起個名,用深度學習技術創建寶寶名字生成器
    筆者不喜歡這個「男女莫辨」的名字——每15個叫戴爾的人裡面,只有一個是女生。當問父母為什麼要給自己起這個名字時,他們的邏輯是這樣的:A.如果從某位女性的名字看不出她的性別,那麼她成功的可能性更大B.他們時髦的朋友剛剛給女兒起名叫戴爾,這個名字太可愛了!
  • 2016猴寶寶取名:屬猴的男孩起什麼名字好?
    2016猴寶寶取名:屬猴的男孩起什麼名字好?  2016猴年男寶寶取名方法  一、以吉祥、祈福的字眼兒為男孩起個好聽的名字  一個好聽的男孩名字自然要迴避開一些不雅字、不吉字,儘量使用吉祥美好的字眼兒。
  • 寶寶命好不好跟起的名字有關係?你家寶寶的名字有什麼寓意?
    生活中很多人因為人生不順而去改名轉運,名字與運氣之間真的有關係嗎?名字,是家長送給寶寶的第一份禮物,包含了家長的殷殷期盼。一個好的名字,不僅需要好聽好記,還要寓意深遠、避免尷尬諧音、避免重名,甚至要合八字、命格。
  • 新時代要給寶寶起個洋氣十足的英文名字啦!
    由4個字母組成。所以整體性給人一種魅力十足、美麗動人、秀色可餐等性格特點。而這不正是女生氣質的體現。【baron】巴倫指的是勇敢的戰士,也比喻高貴、顯赫。起名為「baron」寓意著男生一生富裕、頂天立地、勇敢堅毅。
  • 寶寶起名字:借星宿名給寶寶取一個讓人驚豔的名字
    我們提起星辰總有一種嚮往感,所以我們自古以來就有星宿研究,而用星宿給寶寶起名字也是非常大氣的,下面一起來看看吧!借星宿名給寶寶取一個讓人驚豔的名字南河南河星官是中國傳統天文學的星官之一,屬井宿,共三顆星,其中最著名的是南河三。
  • 周易取名2020鼠年男寶寶起名字大全:鼠年寶寶男孩名字大全
    男孩名字相對於女孩來說還是比較簡單的,不需要特殊的形式,用字也不需要那麼的考究,讓人感到乾淨舒適就行了。今天卜廣鑑老師為大家分享的是有關鼠年男孩寶寶起名字大全的內容,希望幫助大家更加快捷的起出名字,同時帶上生肖屬相,起出更加契合寶寶自身的名字。
  • 寶寶取名字生辰八字五行起名鼠年馬姓女寶寶取什麼名字好
    馬姓是國內秦嶺以北最多的姓氏之一,在國內人口佔比排名前二十,在北方生活學習的人幾乎每個成長階段都能看到2~3個馬姓同齡人。可見鼠年出生的馬姓女寶寶基數是相當大的,北方人歷來給女孩起名講究好兆頭好寓意,那麼鼠年女寶寶取什麼名字好姓馬,卜廣鑑老師將一下內容為您呈現。
  • 寶寶起名字帶木字的名字怎麼起?
    推薦一些帶木字旁的男孩女孩名字寶寶起名字帶木字的名字怎麼起>推薦一些帶木字旁的男孩女孩名字3——棟:本義:指指屋子正中最高處的東西向橫木,引申為擔負重任的人或事物。男孩名字【煒檸】【浩檸】【檸澤】【弈檸】女孩名字【梓檸】【檸汐】【芊檸】【檸妍】6——桐:本義:指樹木,也叫「榮」,如梧桐樹,引申為堅毅,有氣勢,而且梧桐是祥瑞的象徵。用作人名:意指做事有風範、有氣勢、堅毅、象徵幸福之義。寓指:氣宇軒昂、堅毅勇敢、大富大貴。
  • 給男寶寶起個帥氣又時尚的英文名吧!
    如何給男孩起英文名?可以根據受歡迎的英文名給男孩起名字可以藉助受人們歡迎的英文名中提取。畢竟受歡迎的英文名無論是在英文單詞皮面的寓意內涵,還是在其它地區另外的寓意,都是非常好的。給男寶寶起個帥氣又時尚的英文名吧!
  • 如何根據周易生辰八字起名字?從易經裡為孩子取個吉星高照的名字
    很多人都在問:「如何根據周易生辰八字起名字?」因為越來越多的朋友都非常重視自己或寶寶的起名字問題,那麼起名字的依據是什麼呢?江南易林可以告訴你是根據周易生辰八字起名字。所謂的生辰八字,就是四組天幹地支,生辰八字起名字就是根據一個人的生日時辰經過換算得到這個人的生辰八字,然後在此八字基礎上來分析,根據周易生辰八字起名字是中國千百年流傳的經典方法,其理論來源是中國經典的"子平八字"算法理論。據一個人出生的年月日和時辰,排八字,定格局,捉用神,從而決定給寶寶起名字的時候應該補什麼五行的字。 那麼,根據周易生辰八字起名字有什麼具體步驟嗎?
  • 如何按生辰八字給孩子起個好名字
    專業按生辰八字起名並不是迷信,符合生辰八字吉利的名字,對孩子的健康,學習,成長都有幫助作用,名字伴隨自己一生,名字與生活,工作息息相關,所以在給自己的孩子起名時,一定要按生辰八字,下面介紹按生辰八字取名的一些知識。
  • 寶寶起名字大全新生兒起名嬰兒起名字木字旁的女孩名字屬牛
    木字旁的女孩名字屬牛取名技巧父母如果能夠掌握一些取名技巧,將可以更好的為女孩取一個好名字。如下就為大家分享一些技巧,供大家參考一二。一:使用牛寶寶喜用字根取名選取帶牛寶寶喜用字根的漢字為屬牛的女孩取名,能夠符合女孩的命理,會為女孩帶來美好的祝福,有助於女孩更好的成長。牛寶寶常見喜用字根為「艹」、「禾」、「辶」、「氵」、「羽」等,父母可採用含這些字根的漢字為女孩取名。
  • 謝姓男孩起名字 高分有詩意寓意好的男寶寶名字
    好聽的謝姓男孩起名字:01、參考生辰八字生辰八字是決定男孩五行的因素,男孩五行缺什麼,五行八字是否平衡,都可以通過名字來填補。金木水火土五行缺一不可,父母可以通過孩子生辰八字選取合適的字取名。最簡單的方式就是按照部首選取相關五行的字,這樣起的名字對男孩未來發展也很有幫助。
  • 最新¦ 給寶寶起什麼英文名好?加拿大最受歡迎的嬰兒名字榜單出爐
    對於女孩來說,父母們避開了以往常見的單詞。一個新名字Ava佔據了第一名的位置,擊敗了2017年的冠軍Olivia。按照2018年的榜單來看,三個字母的名字最受家長的青睞,幾乎所有女孩十大名字都選擇了小而有力的詞組,包括Lea和Ana。而以字母'a'結尾的名字一直是2018年的趨勢,在整個前100名中都能看出來,包括Clara、Eva、Kira、Ida和Luna。
  • 來給貘寶寶起個名字吧
    1月31日,在鄭州市動物園貘館,中美貘寶寶閃亮登場。它出生已經兩個多月,健康情況和情緒都已經穩定,可以正式露臉迎客了。  貘爸爸「不顧家」,貘媽媽單獨帶妞    初次露面的中美貘寶寶,身材圓滾滾,毛髮黃褐色。鼻子像縮短版的象鼻子,卻和象鼻子一樣能靈活伸展、捲曲。  它可是個美麗的小妞妞。
  • 2020屬鼠女寶寶起名取名字大全:女孩取什麼名字好姓李
    李姓,是我國一個佔比比較大的姓氏,李姓人口在我國的分布也比較廣,對於李姓家長們來說,現在要想給自家的女寶寶起名字其實是一件比較費腦筋的事情了,這也成為了李姓父母的愁惱所在。因此,為了幫助到大家,卜廣鑑老師準備了鼠年女寶寶取什麼名字好姓李的相關內容。
  • 鼠年新生兒用生辰八字五行起名:女寶寶取什麼名字好
    相信會有不少的父母,在給寶寶起名字的時候,都會碰到這類型的問題,那就是,什麼樣的名字才算好名字呢?一個好的名字有什麼特點呢?鼠年出生的女寶寶取什麼名字好呢?因此,今天卜廣鑑老師為大家帶來就是鼠年女寶寶取什麼名字好的相關內容,希望能夠對於大家起名有所幫助。
  • 起個唯美靈動的名字,做朋友圈萌萌的崽!
    起個唯美靈動的名字,做朋友圈萌萌的崽!很多寶爸寶媽都希望給自己家寶寶起個森系風格的名字,森系名字天生就有一種氧氣感,自然清新是這類名字的代名詞。森系名字非常適合女寶寶起名,女孩用森系風格的名字起名,唯美自然,襯託出可愛氣質。今天小編整理了一份森系好名清單,感興趣的寶爸寶媽請繼續往下看哦!遇到喜歡的名字千萬不要猶豫,趕緊保存圖片上車,給寶寶起一個甜甜的萌炸了的好名字吧!