詞彙星空:如何構建一個炫酷的 Word2Vec 可視化

2021-02-21 集智學園


漫遊「詞彙的星空」


該可視化從高維word2vec嵌入構建了最近鄰居圖(Nearest neighbor graph)。

本文由劉晶翻譯自 github

原項目地址:https://github.com/anvaka/word2vec-graph


1.數據集


1.1GloVe 數據集


用於該可視化的數據集來自GloVe,包含60億詞條,40萬單詞,每個單詞由一個300維向量表示。


GloVe 項目地址:https://nlp.stanford.edu/projects/glove/

1.2爬蟲數據集


我還利用 Common Crawl 數據集(8400億詞條,220萬單詞,每個單詞由一個300維向量表示)製作了一張可視化圖。包含非單詞字符和數字的單詞都被刪除。


許多仍然存在的集群代表了拼寫錯誤的單詞:





這些集群的含義很難破解。相比之下,維基百科語料的嵌入更有意義。儘管如此,我仍想保留這個可視化,以便讓你探索它:




2.簡介和細節



word2vec是一系列算法,能夠將單詞嵌入到高維向量空間中。

// For example
cat => [0.1, 0.0, 0.9]
dog => [0.9, 0.0, 0.0]
cow => [0.6, 1.0, 0.5]

詞向量之間的距離越短,相應單詞在語料中通常有著相似的上下文(語境)。這使我們能夠找出單詞之間的距離:


|cat - dog| = 1.20
|cat - cow| = 1.48

"cat" is closer to "dog" than it is to the "cow".

2.1如何構建一個圖


我們可以簡單地遍歷字典中的每個單詞,並將它們添加到圖中。但是這個圖中的連邊是什麼?


如果詞向量之間的距離小於給定的閾值,相應的單詞之間就形成一條連邊。


一旦圖構建完成,我使用這裡給出的方法:Your own graphs 來實現可視化。


注意:從實用角度來看,在高維空間搜索所有最近鄰是一項非常耗費CPU的任務。建立矢量的索引對這個問題有幫助。我不知道針對這個任務有沒有一個好的庫,所以我在Twitter上諮詢。 @gumgumeo和@AMZoellner的建議在 spotify/annoy(https://github.com/spotify/annoy)。


2.2數據與數據預處理


我使用了GloVe項目的預訓練過的word2vec模型。


我最開始渲染 Word2vec 圖的結果是數量龐大的數字集群。 word2vec模型真的很喜歡把數字放在一起(直觀上我認為這很有道理)。唉,這使得可視化變得無趣。當我從一個集群到另一個集群時,卻發現只是從一個全是2017 - 2300的數字,而另一個是0.501 .. 0.403


在Common Crawl 的word2vec編碼中,我刪除了所有包含非單詞字符或數字的單詞。在我看來,這使得可視化更加有趣,但很多集群仍然不容易理解。




不同單詞的 in-degree 和 out-degree



3.本地設置

3.1環境要求

確保 node.js 已安裝。

git clone https://github.com/anvaka/word2vec-graph.git
cd word2vec-graph
npm install

下載詞向量,並將它們提取到圖數據中

修改 save_text_edges.py 指向新提取的向量(請參閱文件獲取更多細節)

運行 python save_text_edges.py - 取決於輸入詞向量文件的大小,這需要一段時間。輸出文件 edges.txt 將被保存在 graph-data 文件夾中

運行 node edges2graph.js graph-data / edges.txt - 這將以二進位格式將圖形保存到graph-data 文件夾(graph-data / labels.json,graph-data / links.bin)

現在是時候運行布局了。有兩種選擇。一個很慢,另一個速度更快,尤其是在多線程CPU上。

3.2生成節點的布局


你可以使用

node --max-old-space-size=12000 layout.js

來生成布局。這需要一段時間才能收斂(500次迭代後停止)。還要注意,我們需要增加節點進程的最大允許RAM(max-old-space-size 參數)。我將它設置為〜12GB - 這足以滿足我的情況


3.3利用C++生成布局

更快的版本是編譯 layout++ 模塊。您將需要手動下載並編譯 anvaka / ngraph.native 包(https://github.com/anvaka/ngraph.native)。


在ubuntu上它非常簡單:只需運行./compile-demo ,layout ++文件會在工作文件夾中被創建。你可以將該文件複製到庫中,然後運行:

./layout++ ./graph-data/links.bin

布局會更快地收斂,但是你需要在500-700次迭代後手動殺死它(Ctrl + C)。


你會發現很多 .bin 文件。只需選擇數字最高的那個,然後將其作為positions.bin複製到graph-data/ 文件夾中。例如:

cp 500.bin ./graph-data/positions.bin


搞定!現在圖和位置布局都準備好了。你可以在 https://anvaka.github.io/pm/#/ 使用 Your own graphs (https://github.com/anvaka/pm#your-own-graphs)裡的說明可視化你的新圖。


關注集智AI學園公眾號

獲取更多更有趣的AI教程吧!

搜索微信公眾號:swarmAI

集智AI學園QQ群:426390994

學園網站:campus.swarma.org

 商務合作|zhangqian@swarma.org     

投稿轉載|wangjiannan@swarma.org

相關焦點

  • 新年微課:實戰學習網絡輿情可視化工具
    而可視化工具的出現則很好的彌補了這一缺陷。它不僅可以抓取輿論數據,並繪製出網絡輿論的傳播軌跡圖,了解網絡事件的傳播發展過程。此外,還可以可視化哪些是信源、傳播者、受傳者、渠道、反饋機制等關鍵因素。從而幫助我們構建傳播體系既能保證網民的話語權,維護用戶參與內容生產的開放性和獨立性,又能引導用戶重視自身的道德責任建設,搭建相對寬容的對話框架,疏導客觀冷靜的輿論走向。
  • Outlook | 外國人最熟悉的中文詞彙是? What is your favorite Chinese word?
    調研選取了美國、英國、澳大利亞、菲律賓、南非、加拿大、新加坡和印度等8個英語圈國家的民眾作為調研對象,並形成了進入英語話語體系的漢語拼音詞彙認知度前100位總榜。除此之外,也有不少代表中國科技創新能力的詞彙上榜。比如中國高鐵、嫦娥探月、支付寶等詞彙,在國外也有很高的認知度。Among the Chinese words ranked in the top 100, the largest proportion of words in the cultural category.
  • 油管大神Brandon Li:如何自然地構建一個精彩魔性的故事
    今天給大家分享油管大神Brandon Li的故事,內容包括:1.Brandon Li的經歷和牛叉之處(圖文)2.Brandon Li的一個旅拍作品(視頻)3.Brandon Li教學視頻(視頻)1.Brandon Li的早年經歷Brandon Li 18歲之前一直在美國密蘇裡州,北卡羅來納大學的藝術學院畢業後去了一個叫 True Life 的節目做 MTV,他獨自完成了一百多次採訪
  • 雙語:老外告訴你 英語詞彙量多大才夠?
    我們不妨來看看外國人的詞彙量是多少。1986年,英國《衛報》估算英國人2歲的單詞量約為300個,5歲時為5000個,到了12歲,詞彙量在12000個左右。《衛報》的研究認為大多數人之後的詞彙量都不會有太大的變化。它還指出,12000詞彙量基本等同於流行報紙每天文章裡的詞彙量。但是大學畢業生的詞彙量大約是其2倍,約23000個。莎士比亞則是所有英語作家中詞彙量最大的之一,高達約30000個單詞。
  • 英翻中:Cambridge Dictionary's Word of the Year 2020
    我們2020年的年度詞彙是……隔離。我們的數據顯示,它是今年劍橋詞典中搜索頻率最高的單詞之一。我們的編輯們注意到這個詞搜索量的激增,他們熱衷於研究人們是如何使用「隔離」這個詞,並找到一個從原有意義上延伸出的新意義:在一段時間裡,人們不允許離開家園或自由旅行,這樣他們不會被傳染與傳播疾病。
  • 星空攝影神器:到底什麼是「天文改機」?
    對於愛好天文攝影的影友來說,稍加深入學習就會聽到一個被反覆提及的器材——天文改機。
  • 雙語 | 2017牛津詞典年度詞彙:青年震蕩(youthquake)-附韋氏/柯林斯/谷歌等年度詞彙大全
    「青年震蕩」一詞最早是由美國《時裝》雜誌編輯黛安娜·弗裡蘭1965年所造,用於描述年輕人的文化如何改變著時尚和音樂。過去一年間,這一詞語的使用頻率大增,尤其是今年6月英國大選、9月紐西蘭大選期間。牛津詞典總裁卡斯帕•格拉斯沃說,『青年震蕩』居首是因為這是「罕見的一個讓人燃起希望的政治詞彙」。
  • V-RAY: 建築可視化 3D 渲染軟體
    V-Ray 是建築可視化行業首屈一指的渲染器100 家頂級建築公司中有 92 家選擇 V-Ray 來表現他們的設計,方案包含世界最高的大廈,可持續的住宅,和智能城市。V-Ray 為建築學而生。BRICK 是這麼做的總部在布達佩斯的 Brick Visual 分享了 VR 的成功經驗,以及這個新的媒體將會如何永久的改變建築行業。
  • 2016厲害了word大中國!2017繼續擼起袖子一起幹
    各位寶寶們,大家2017好呀~小編我掐指一算,你們還有一個大紅包沒有收哦!
  • 英語知識:「中國漢字」千萬別翻譯為「Chinese word」!
    那麼「Chinese」這個詞到底如何正確應用呢?.01『我是中國人』不是『I’m a Chinese.』作為一個地道的中國人,你向老外自我介紹時一定會說『我是中國人。』但是千萬不要說『I'm a Chinese.』這可是錯誤說法。..
  • 紐西蘭最美玻璃小屋,圓一個星空下的夢
    星空下的浪漫,註定將會是一次難得的經歷。去年四月份,在Tekapo附近,推出了一個全玻璃小屋——Skyscape.
  • 我自豪丨2016厲害了word大中國!2017繼續擼起袖子一起幹
    各位寶寶們,大家2017好呀~小編我掐指一算,你們還有一個大紅包沒有收哦!
  • 記住:「中國漢字」不是'Chinese Word'
    可不是Chinese word中國漢字是象形文字,方框字,上世紀50年代為了方便學習才發明了拼音。漢字需要用單獨的詞來表達,就是Chinese character.但是世界上大多數語言都是字母拼成,他們都有字母表,比如英語有26個字母,所以,英文單詞是字母組成詞彙,英文字是用English word來表達。
  • 星空裡的色彩與詩篇:摯愛Coldplay
    這首歌,大體就是一則關於愛成往事、逝水難追的敘事,但把科學和進程等技術類詞彙放入一首情歌,是否有牽強附會之意?後來我看了這首歌的MV。MV是用倒帶的拍攝方式由果溯因,亦即主人公發生事故後的倒敘:愛人死去、車禍、爭吵、與愛人愉快出行。
  • 【紅包封面】星空彩虹 X 陰陽師 X 天刀 X 穿越火線 X 第五人格 X 鬥地主 X 肯德基 免費領取隱藏紅包序列號
    【今日領到的紅包封面】個性紅包,好看,炫酷。
  • 牛津詞典:年度詞彙不選了,2020年是「令人無言的一年」
    按照慣例,英國牛津詞典每年年末都會發布一個年度詞彙或短語,而動蕩混亂的2020年讓牛津詞典在選擇年度代表詞時犯了難,最終只能以報告的形式收錄一組年度詞彙
  • 鋒友分享:在iPhone上設置可視化語音信箱
    9.2 正式版中體驗到了這項功能。而什麼是可視化語音信箱呢?我們來具體了解一下。日前,鋒友 Gavin.Ding 為我們解釋了可視化語音信箱的各項功能以及具體的設置方法。目前,使用 iPhone 4s 以上機型的中國移動用戶已經可以體驗到可視化語音信箱,而電信和聯通還沒有提供此項服務。要想解釋什麼是可視化語音信箱,我們需要先說一說語音信箱業務。
  • 【星空巧克力】,免費課程來了.1月25日,Kiss烘焙教室,免費為大家講解星空巧克力課程,為即將到來的情人做準備.
    1月25日,Kiss烘焙教室,免費為大家講解星空巧克力課程,為即將到來的情人做準備。主要教授2種星空巧克力的做法,一種用手繪,一種用噴槍製作。(不想買噴槍的朋友可以省錢了。)課程是完全免費的,強烈建議大家報名,而且為即將到來的情人節做準備哦,2月14號就是情人節了。生活就像星空巧克力,你永遠不知道下一塊是什麼口味,覆盆子,抹茶,還是百香果。對待戀人也是一樣,不知道下一秒會是怎樣的開心,所以做一份心愛的手工星空巧克力給自己的愛人吧!