日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最新emoji表情代码大全_NO.3 如何用Emoji迷惑人类

發布時間:2024/8/1 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最新emoji表情代码大全_NO.3 如何用Emoji迷惑人类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何用

1??🐴🐔

迷惑人類

03

??? Emoji,是維達勛爵,或者說是安納金·天行者發明的。當年勛爵的部下急于尋找絕地武士的蹤跡,幾乎把整個艦隊都送進了共和國的埋伏圈。面具下的維達勛爵對屬下感到極度的無奈,在沉重的呼吸聲中,他嘆息道:誒,莫急。一旁的侍衛把這話記錄了下來,史稱誒莫急,也就是Emoji之始。

????不過,低能的帝國軍官只是知道有“Emoji”的存在,并不知道如何將帝國官方語言轉化為維達勛爵創立的這門新語,因此屢屢被勛爵使用原力吊死。我想,如果可以將日常語言轉化為Emoji的話,有朝一日黑勛爵本尊來曬布巡視,我便可以對答如流了。

????不瞞你說,上面全是胡扯。不過Emoji在各位抽象青年的日常交流中起到的作用,實是有目共睹。本文將系統地介紹Emoji框架,并在Android系統上實現中文轉Emoji翻譯器。

2015年牛牛津詞典年度詞語?!缎l報》評論它表露出“嘲弄、揶揄的神態,天生便是殘忍的模樣”[1]

Emoji系統組成

????與一般的表情包以圖片形式存儲不同,Emoji系列表情在2010年被收錄進了Unicode字符集中。而在今天,絕大多數智能設備都完整地支持該字符集,這就意味著Emoji字符在技術層面上早已是與漢字、英文字母等一般字符并列的存在。顯示、存儲與傳輸Emoji表情的技術原理與對應地操作中文、英文的原理相同。

??? Emoji在編碼上的通用性加速了它的傳播,使其成為了全球使用最廣泛的表情包。大面積地使用帶來了為數不少的【正確性】問題。在上古時代,Emoji中所有出現人臉的表情都是類似辛普森一家中的黃臉,這種安排一度引起了有關膚色的爭議。不僅如此,更早版本的部分表情中只有一種性別的人物版本,這又引起了有關性別偏見的爭議。

? ? 要解決這個問題,簡單而暴力地使每一種表情都有各種膚色、各種性別的版本其實是不可行的,它會倍增原有的表情數量,甚至可能使Emoji字符集超出Unicode為其劃定的范圍。對此,官方給出的解決方案是加入兩個特殊字符:“零寬連字”(ZWJ,在Unicode中的編號為U+200D)與“菲茨帕特里克修飾符”(U+1F3FB ~ U+1F3FF)。

零寬連字:這一特殊的Emoji字符本身并不會以任何方式顯示,而會將自己和相鄰的兩個Emoji字符連接起來,使這三個字符以一個表情的形式合并顯示。

????比如,這是一個男人:👨,把他和糧食用ZWJ連接起來:

👨+ZWJ+🌾 =?👨?🌾

????同樣地,這是一個女人:👩,把她和糧食用ZWJ連接起來:

👩+ZWJ+🌾 =?👩?🌾

菲茨帕特里克修飾符:對應菲茨帕特里克度量對人類膚色的分類

維基百科https://zh.wikipedia.org/wiki/%E7%B9%AA%E6%96%87%E5%AD%97

?????例如,“黑發的黑人與金發的白人手拉著手”這一表情的合成過程為:

🧑+🏿+ZWJ+🤝+ZWJ+🧑+🏻 =?🧑🏿?🤝?🧑🏻

????即:人+白皮膚+連接+握手+連接+人+黑皮膚 =?黑發的黑人與金發的白人手拉著手。遺憾的是,我們發現許多設備雖然可以正確處理這一表情,卻因為本地字符庫中沒有對應的表情字符而將其顯示為三個表情。正確的顯示應為:

????在ZWJ、菲茨帕特里克修飾符與控制性別、發型等特征的修飾性Emoji的共同作用下,僅“二人握手”這一類表情就可以有3,200種。

????事實上,大多數情況下,我們不需要考慮ZWJ與菲茨,因為它們已經隱式地被系統與原表情整合在一起顯示、存儲或傳輸。手機上的Emoji欄就是一個很好的例子:它并沒有提供ZWJ、修飾符的手工輸入功能,而是將常用的組合列在Emoji表中以供選用。

琢磨算法

????為了將中文翻譯成Emoji,經過分析可得下列操作:

  • 將用戶輸入的文段分割成詞

  • 以詞為索引,在中文——Emoji表中查找對應的Emoji

  • ????這便是簡單的原始想法。這個想法帶來了幾個技術問題:

    • 很顯然,不能暴力地把中文文段按字符分隔。例如“桌子”一詞的含義≠“桌”+“兒子”

    • 中文詞條數不勝數,而且無序。如果將大量的詞條添加到中文——Emoji表中,搜索將帶來災難性的高成本。

    不過,眾所周知,技術問題不是問題

    • 編寫一個散列算法,為長度不等的中文詞條創建長度相等的哈希代碼,按照詞條對應的哈希代碼將詞條添加到數據庫的不同層中。這樣,完全無序的中文此條變得部分有序。

    • 編寫一個匹配算法,從一個長句中節選出幾個數據庫中存在的關鍵詞。對于數據庫中不存在的詞語,則不作合并以單字出現。

    • 只列舉有限的常用詞匯。對于不在數據庫中的詞匯,即匹配算法無法匹配的單字,則以諧音翻譯。

    ????然而,問題繼續出現

    • 如何獲取單字的拼音?

    • 在充滿中文詞條的數據庫中搜索相當有限的幾個拼音,是否算得上浪費?

    ????于是,繼續解決問題

    • 為常用漢字建立拼音數據庫

    • 詞條數據庫一分為二。主數據庫存儲詞條——Emoji表,副數據庫存儲拼音單音——Emoji表

    ????然而,問題繼續出現

    • 常用漢字同樣浩若煙海,同樣無序,搜索常用漢字又是一個災難

    ????看到問題只剩一個,我心里(一陣爽快啦)

    • 以散列算法,為常用漢字拼音數據庫分層,使其部分有序。

    ????仔細想了一想,在這個階段沒什么太大的問題了。

    ????真的嗎?

    ????嗯,對,至少現在想不到什么太大的問題?

    ????真的嗎?

    ????嗯……對,我想是的。

    ??? Yeeeeeeeeeeeeaaaaaaaaaoooooooooop!

    豬叫

    散列算法

    ????散列算法,又稱哈希算法,是一種把長度不等的數據轉化為等長編碼的算法。

    設有散列函數f(x):

    hash = f(data)

    ????散列算法一個重要的特征是,將data轉化為hash的成本很低,但從hash得到data則需要很高成本,或根本不可能。因此,這種算法在密碼學中應用很廣泛。常用的散列算法有MD5、SHA-2等。

    ????在本例中,我們設計散列算法的目的在于:將一個完全無序的數據庫部分有序化。設想,某中學有二十萬個學生(再設想這是哪一所中學),學生王某元涉嫌毀壞公物被攝像頭拍照。教導主任要拿著這張照片找到他,需要逐一比較二十萬個學生,給了王某充分的竄逃時間。但如果主任一看到照片,就能準確地判斷出王某是哪個年級、哪個班、哪個組的學生,就只需要與十幾個學生進行比較,王某可謂插翅難逃。

    ????同樣地,如果我們將(漢字,拼音)對以及(詞條,Emoji)對簡單地堆放在數據庫中,搜索時只能依次比較,這種查找被稱為線性查找,有一個看似很令人愉悅的O(n)的復雜度,但是n相當大時,時間成本仍然不小。而如果我們取(漢字,拼音)對中的漢字的哈希編碼,依照這一編碼將(漢字,拼音)對儲存在數據庫中對應的區塊,就只需要在這一區塊中進行查找。

    ????假設有3000個數據,哈希編碼的長度為8位(二進制8位,10進制無符號取值范圍為0~255),則一個數據塊中平均僅有3000/256=11.72個數據。因此,散列算法給出的hash編碼在取值范圍內分布得越均勻,線性查找的成本就越小,查找就越快。

    ????為了幫助理解,下面我們將嘗試對3,500個(漢字,拼音)對進行散列。

    方案一:將存儲漢字字符的每個字節數值相加,取相加結果的小端第三個字節為Hash。將每個(漢字,拼音)對保存在數據文件中其Hash值對應的行內。

    方案二:將存儲漢字字符的每個字節數值相加,取其平方,取平方結果的小端第三個字節為Hash。將每個(漢字,拼音)對保存在數據文件中其Hash值對應的行內。

    方案三:取存儲漢字字符的最后一個字節為Hash。

    結果:

    ????很顯然,方案二在三個方案中最優。按照這一思路進一步優化散列算法。

    匹配算法

    ????分割詞元,高深。搞這些,一般用深度學習,神經算法,哈哈。

    ????我們偏不搞(不會),下面是一種簡單的匹配方案。

    ????試想:用戶輸入了一個名為source的字符串:

    ????而我們的數據庫中所有中文詞條構成的數組為:

    ????開始匹配時,以源字符串中的第1個字符“奧”作為參照,尋找第1個字符為“奧”的數據。第一個搜索到的是數據庫中的第1條“奧利奧”,因此,以源字符串中的第2個字符“利”作為參照,發現數據庫中第1條的第2個字符繼續匹配。又以源字符串中第3個字符“給”作為參照,數據庫第1條第3個字符“奧”不匹配。至此,得出數據庫中第1條數據匹配度為2。

    ? ?上文以藍色標出的循環繼續進行,開始匹配數據庫中第2條數據,得出匹配度為3。故可知第2條數據的匹配程度更高。所以源字符串中匹配的第一個詞為“奧利給”。

    ?????上文以綠色標出的循環繼續進行,由于“奧利給”已經匹配,開始以“中”為參照匹配。這次,數據庫中的兩條數據匹配程度都是0,可知“中”是不在詞條庫中的單字,所以源字符串中匹配的第二個詞為“中”本身。同理,第三個詞為“給”本身。

    ????形象地來看,先用source[i]與database[j][k]比較,發現相同后k+1,i+1,比較第二個字符,直至出現不同,記錄下database[j]對應的匹配程度,j+1,i復位為開始比較的字符的索引,比較第二條數據。如果第二條數據的匹配程度高于第一條,則臨時將第二條數據作為匹配結果。如此繼續比較,直至數據庫被遍歷完畢,這時的臨時比較結果匹配程度最高,自動成為“正式”匹配結果。i向右移n位,n為具體匹配的字符數+1。

    ????將以上邏輯普遍化,則得到代碼:

    internal static List<string> SplitString(string source){ List<string> result = new List<string>(); for (int sourceindex = 0; sourceindex < source.Length;) { string addmeaning = "" + source[sourceindex]; int max_match_count = 0; int match_count = 0; List<string> meaninglist = Database.MeaningList[GetWordHash(source[sourceindex] + "", Encoding.UTF8)]; for (int meaninglist_index = 0; meaninglist_index < meaninglist.Count; meaninglist_index++) { int meaning_index = 0; match_count = 0; string match = null; while (sourceindex < source.Length && meaning_index < meaninglist[meaninglist_index].Length && meaninglist[meaninglist_index][meaning_index] == source[sourceindex + match_count]) { match += meaninglist[meaninglist_index][meaning_index]; match_count++; meaning_index++; if (sourceindex + match_count == source.Length) break; } if (match_count > max_match_count) { addmeaning = match; max_match_count = match_count; } } sourceindex += max_match_count; if (max_match_count == 0) sourceindex++; result.Add(addmeaning); } return result;}

    操作數據庫

    ????按照上面提到的規劃,我們建立三個數據庫:

    主數據庫:

    這一數據庫存儲(漢語詞條,Emoji)對。隨著后續發展,漢語詞條的數量可能變得十分龐大,因此這一數據庫中的數據需經散列算法操作

    主數據庫在內存中以string[y][x]形式存儲。y為將漢語詞條作為散列函數參數得到的哈希編碼,x為按分隔符分割一行數據得到的信息元數組的索引,如圖示的i、i+1、i+2

    副數據庫:

    這一數據庫存儲(拼音,Emoji)對。漢語拼音組合的數量有限,因此副數據庫的條目在200個左右,且有一定順序(即拼音字母順序)不需要進行散列處理。

    拼音數據庫:

    這一數據庫存儲(漢字,拼音)對。目前收錄入庫的漢字有3,500個左右,對其進行散列操作, 得到下列結構。此數據庫在內存中的結構為string[y][x],y為漢字對應的哈希編碼,x為按分隔符分割一行數據得到的信息元數組的索引。

    整合算法之后

    ? ? 本文以Xamarin框架搭配C#完成安卓系統上的翻譯器開發。Xamarin框架較為復雜,進一步了解請參閱:?

    https://docs.microsoft.com/zh-cn/xamarin/get-started/what-is-xamarin(微軟中文文檔)

    ?????長話短說,在簡單地為算法編寫Android應用程序后,我們得到了下面的成果:

    應用圖標,取“鬼”之吉意

    好了,我知道界面很丑。

    ????目前,Emoooooii更新到了v0.3beta6版本。我們將持續在Github上更新源代碼以及軟件成品:

    https://github.com/Pieski/Emoooooji(Github頁面)

    ????如果你在從你的網絡位置訪問Github的過程中遇到了一些困難(也就是說,你在里面),請私信我們獲取程序。注意,本程序遵循GNU GPLv3協議,用戶可以自由使用/傳播程序/源代碼,但應醒目地標志來源

    在擴充數據庫后,我們將會在一篇新推文中發布正式版本。當然,您隨時可以獲取公測版本,并暫時地使用不完整的數據庫。

    03

    1????🍺🔟我們🉐第3??篇推文,請繼續關🐷👻🙆🐑🐎🙆👑。🎱💊說了,關🐷我們🎱🍺行了。

    03

    [1]https://web.archive.org/web/20170624083905/https://www.theguardian.com/commentisfree/2016/nov/24/tears-of-joy-emoji-worst-gloat-about-human-suffering(英文)

    鬼人揚呀,馬人王

    一頓不吃,餓得慌

    三天不看,有點涼

    七日一更,還真香

    總結

    以上是生活随笔為你收集整理的最新emoji表情代码大全_NO.3 如何用Emoji迷惑人类的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。