建立公眾號的第三天,我發現了微信的一個秘密
編輯導語:在微信關注的公眾號列表中,是按首字母排序的,所以可以直接根據首字母定位到公眾號所在的位置。然而,如果公眾號名字的第一個字是多音字,又會怎么排序呢?感興趣的小伙伴們一起來看一下吧。
為了記錄作為產品經理學習成長的過程,我和柏林決定做一檔公眾號,希望能把我們感興趣的和深度思考的內容都表達出來。
由于資歷尚淺,工作之余可能也沒辦法針對一個東西無限花費精力,只希望憑借有限的資源和能力產出更有深度的內容,于是我們高調地把頻道名稱確定為了『淺入深出』,吹牛之余,也是希望我們自己可以由淺入深,未來能夠獨擋一面。
開會,畫餅,確定后續的內容方向,討論品牌slogan,測試關注自動回復,發出第一篇內容,一切順順利利。
就在我們滿心歡喜,為踏出第一步而興奮不已之時,我們兩都發現了一個問題——咦?怎么……明明已經關注了,但是公眾號列表里看不見『淺入深出』的大名?
難道是個人號不顯示?
觀察我自己劃水摸魚的號之后,發現明顯不是,也是重新啟用不久,發布內容寥寥無幾,但公眾號明明白白顯示在關注列表之中。
那么『淺入深出』是怎么就不見了呢?
我們刷新刷新又刷新,又反復取消關注、重新關注了幾次,基本可以確定在關注列表中Q打頭的一列,實實在在就是不存在『淺入深出』。
但這不是說我們完全看不了我們的公眾號了,其實在搜索欄里,是可以通過關鍵字檢索出來『淺入深出』的,我們也可以順利看到之前發布的內容,就是關注列表里啥也沒有,奇了怪了!
結合現在的狀況和我們的經驗,我們梳理給到了以下一些猜想:
- 個人號不顯示
- 公眾號所有者不顯示
- 新建號需要審核,不會立馬向公眾批露
- 存有違規記錄,公眾號被隱藏
- 重啟賬號解凍后有緩沖期
- 微信顯示bug
對個人摸魚的號進行觀察,并邀請其他人關注測試后,發現1、2兩種情況基本排除,對于后三種情況就要分情況討論了。
3:如果新建賬號需要審核,平臺應該有相關通知或提醒,等待期是普遍情況網絡中應該有相關信息。
然而實際檢索后并未得到任何公眾號建立審核相關信息,實際在復現操作的時候,我們也未發現任何相關遺漏提醒。
但至此并不能真偽,結合我們對審核機制的了解,決定針對3情況,給出24小時和72小時的節點,觀察是否有相關反饋。
4:『淺入深出』所屬賬號由柏林近期重啟,他以前弄過多個賬號進行過各類騷操作,因而我十分懷疑其賬號有過違規行為導致賬號被降權或者隱藏。
然而一樣的,在網絡上并沒有找到任何相關處罰信息,對賬號歷史進行溯源后也未發現任何違規記錄。
實際在對騰訊智能客戶反饋后,相關問題里只能獲得“公眾號無法被搜索”和“公眾號被凍結”的結果,卻沒有“公眾號被隱藏”或者“公眾號看不到”的任何相關信息。
基本4、5和3一樣,都可以算是排除的,但一樣都無法立刻證偽,也無相關信息去推測規則。
所以我們決定等待一段時間后根據情況是否要確定是情況6,并反饋給騰訊方面。
然而就在我們焦急并存在一點小得意:你瞧,咱上任第一天就發現了騰訊的bug,諸如此類的心情時……居然發生了一件離天下之大譜的事情,全盤推翻了我們上述所有猜想和推論。
『淺入深出』居然找著了!
在我對著一大串關注列表滑過來滑過去的時候,突然一個熟悉的頭像出現在了我的眼前,仔細觀瞧,沒錯,確實是我們的『淺入深出』!
看來審核通過了……這個想法還沒在我的腦海里完全浮現,我就發現了不對勁的地方——為什么“淺”開頭的公眾號要放在“ J ”下面?!感情前兩天我們是壓根沒翻到?
我把這個事兒說給柏林后,我們一時忍不住嘴角抽搐,實在無法解釋。這是啥奇怪的機制么?還是什么更莫名其妙的bug?
丈二和尚摸不著頭腦。
在沉默了幾分鐘后,一個奇怪的想法浮上了我的心頭——“Q”、“J”……難不成,“淺”居然是個多音字?!
最終,百度百科給出了答案,毫無疑問,是我才疏學淺了。
“淺”確實是個多音字,發“qiǎn”這個音時,指代水不深和一些表示距離、時間、內容等不深、不多的抽象含義;發“jiān”這個音時,是古時候形容水流聲的象聲詞,現在基本不用了。
所以『淺入深出』在“ J ”之下并不是什么bug,有很完整的底層邏輯,就是按照首字母排列。
倒是我們在觀察的時候不仔細,進行歸因的時候局限在常識、經驗里面,并且未給到更廣泛、合理的猜測和驗證方案。如果這是個正式項目,我們可能就因為錯誤的驗證浪費了一些工作周期。
這是個警示,通常說的不要陷入慣性思維和先入為主,在這里我們犯了個遍,在給出猜想的時候也沒給到預留的空間,值得反……反思個p呀!
誰知道“淺”是個多音字啊!就算知道,為什么多音字也用那個不常用的發音啊!很奇怪啊好不好!
為此我們決定一探究竟,微信的中文多音字首字母排列到底是什么樣的?常見中文首字母排列是否是同樣做法?
結合對公眾號的一些觀察,我們確定了實驗的要求:
- 挑選多音字開頭的公眾號關注,且要求開頭的多音字必須是非同字母異音。什么意思呢?就是得類似“qiǎn”和“jiān”這樣,而類似蚌埠的“bàng”和“bèng”就完全沒用。
- 發音具有差異的同時,詞義也要有明顯差異。主要是我們想測一測發音、詞義和首字母排列的相關關系。
- 篩選實際詞義和發音不同的多個公眾號關注測試。
對此我們粗略確定了幾個字——“淺”、“秘”、“重”、“樂”。
對“淺”、“秘”、“重”的測試很快就完成了,并成功讓我們一整嘴角抽抽,結果如下:
實際可以看出,微信的中文首字母排序不分詞義,很好理解,費力也沒那么討好。但這個排序實在有點讓我腦子疼:
- “淺”這個字都取了“ J ”開頭,不是常用的qian的“Q”
- “秘”這個字都取了秘魯的“B”開頭,不是常用的秘密的“M”
- “重”這個字都取了重復和重慶的“C”,而不是重要的“Z”,不過這個說不上哪一個更重要
可以見到,這個排列并不是完全按照常用的發音來選擇。
仔細觀察一下似乎所有選取發音的首字母,都較后一個未選擇的發音首字母更靠前,那應該是多音字在選擇排列之前, 漢字轉換拼音時選擇對應發音的邏輯,也是按首字母排列選擇更靠前的。
然后,在測試完最后一個“樂”字后我的心情又郁悶了……
如上圖所示,“樂”字居然選擇的是樂譜的“Y”,而不是更靠前的“L”!我……這……為什么啊!tell me why!
是什么奇怪的策略嗎?比如說城市、姓氏發音優先?好吧,這樣“秘”和“重”都可以說得通,但“淺”怎么解釋?就算查到了淺確實是個稀有姓氏,但是人家也發音“qiǎn”啊喂。
至此可能就需要轉化一下想法了,按照奧卡姆剃刀原理——“如無必要,勿增實體”,把推測簡化一下,或許首字母排列并不是什么重要內容,產品和程序在做的時候并不會特別處理。
那么實際在應用的開發中,對相關規則的處理可能就是產品提出列表按首字母排序,程序使用已經封裝好的庫快速上線。
如此一來只要找到相關的輪子這個謎題就可以得到解決——即使我們可能并沒有辦法明白為什么第一個處理相關需求的產品和開發人員要這樣處理,但他們的工作確實導致了現在的現象。
通過了解相關開發情況,這個需求往更深的底層邏輯是需要把漢字轉換成拼音,再截取首字母,再進一步排序。
一些將漢字轉換成拼音的程序本質是比對字符,然后再選取字符對應的拼音字符,這里的對應關系是靠一張提前寫好的字庫確定的。
如無特殊情況,一般來說在選擇字符對應發音的時候,程序就直接選擇默認靠前的發音。
實際工作中,不管是為了減少工作量,還是列表的瀏覽觀感,大部分首字母排序都不考慮實意和發音,按字符默認選擇。
然而我在github上查閱了java和js常用庫的字庫后,發現其結果又和微信的順序不一樣了。如下圖,不管是java還是js相關字庫大部分默認的拼音還是最常用的……
到最后我也沒找到類似的字庫可以完整解釋微信公眾號排序的現象。只能推測微信用的字庫可能有點問題,或者按照網絡中提及的更先進的做法,微信在漢字轉換拼音的過程中側重向地名、人名等,具體程序的規則就不得而知了。
不過不管怎么樣,這個“淺”放在這很難受啊喂!也沒啥常用的人名、地名吧!
最后再補充一個有限范圍內容的中文字母排序規則的規范案例。
在支付寶火車票購買中的目的地篩選,也是按名稱首字母排序,但并沒有多音字錯位的問題。實際觀察可以發現所有中文城市名旁都有英文代號簡寫,其首字母就是城市首字母的縮寫,在底層實現的過程中大概率是沒有再使用漢字轉拼音的操作,而直接利用代號進行排序,自定義了規范的對應關系。
最后~歡迎關注我們的公眾號,見證兩個產品小白的成長。
本文由@叨叨石 原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自Unsplash,基于 CC0 協議。
哈哈哈哈哈哈哈作者好可愛,“可是qian的毒藥也很常見啊喂”,感覺發現了微信的一個是bug又不是bug的奇妙地方
我猜你想說 讀音 哈哈哈
還真沒想過這個多音字問題!又發現一個小細節哈哈
這小細節 ~ 都被樓主挖這么深
贊
這兒的文章標題也開始卷了嗎(*?????)
哈哈哈,本來是公眾號的標題,沒想到人人編輯給通過了(給他加雞腿)
哈哈哈居然發現了這么一個小細節,又漲知識了
上次給自己的公眾號起名字想了一天一夜,最后起了個英文名,哭了
好事,不會出現首字母問題:)