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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Word2vec词向量工具带你发现不一样的《天龙八部》

發(fā)布時(shí)間:2023/12/20 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Word2vec词向量工具带你发现不一样的《天龙八部》 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

詞向量技術(shù)是將詞語(yǔ)轉(zhuǎn)化成為稠密向量。在自然語(yǔ)言處理應(yīng)用中,詞向量作為機(jī)器學(xué)習(xí)、深度學(xué)習(xí)模型的特征進(jìn)行輸入。因此,最終模型的效果很大程度上取決于詞向量的效果。

Word2vec 是 Google 在 2013 年開(kāi)源的一款將詞表征為實(shí)數(shù)值向量的高效工具,利用深度學(xué)習(xí)思想,通過(guò)訓(xùn)練,把對(duì)文本內(nèi)容的處理簡(jiǎn)化為 K 維向量空間中的向量運(yùn)算,而向量空間上的相似度可以用來(lái)表示文本語(yǔ)義上的相似度。

word2vec輸出的詞向量可以被用來(lái)做很多 NLP 相關(guān)的工作,比如聚類、找同義詞、詞性分析等等。如果換個(gè)思路,把詞當(dāng)做特征,那么Word2vec就可以把特征映射到 K 維向量空間,可以為文本數(shù)據(jù)尋求更加深層次的特征表示。 Word2vec 使用的是 Distributed representation 的詞向量表示方式。采用一個(gè)三層的神經(jīng)網(wǎng)絡(luò)“輸入層-隱層-輸出層”。有個(gè)核心的技術(shù)是根據(jù)詞頻用Huffman編碼,使得所有詞頻相似的詞隱藏層激活的內(nèi)容基本一致,出現(xiàn)頻率越高的詞語(yǔ),他們激活的隱藏層數(shù)目越少,這樣有效的降低了計(jì)算的復(fù)雜度。

簡(jiǎn)單的理論大概就是上面這些,我比較喜歡《天龍八部》這部小說(shuō),“有情皆孽,無(wú)人不冤”是這部小說(shuō)的主旨,人物豐富,情節(jié)緊湊,每個(gè)人都演繹了“求不得”這出自佛經(jīng)的三個(gè)字。下面我們通過(guò)代碼分析一下實(shí)際是不是這樣?

  • 第一步:我們找到《天龍八部》這部小說(shuō)的txt文件,去掉停用詞,然后利用結(jié)巴分詞整理成能夠被Word2vec使用的格式。

整理完的文本,整部小說(shuō)的第一節(jié)標(biāo)題:第01章 青衫磊落險(xiǎn)峰行? 如下:

[' ', '青衫', '磊落', '險(xiǎn)峰', '行']
  • 第二步:我們先結(jié)合詞云工具畫(huà)出小說(shuō)中出現(xiàn)次數(shù)最多的四字成語(yǔ)

貌似不是我們一開(kāi)始說(shuō)的那樣求不得,看起來(lái)整部小說(shuō)還是非常豪放,充滿了江湖的俠義之氣,不是我們最初預(yù)料的那種悲苦的基調(diào)。

  • 第三步:利用Word2vec分析這部小說(shuō)的人物

1.和段譽(yù)最相關(guān)的詞

[('木婉清', 0.9940025806427002), ('低聲', 0.9905248284339905), ('王語(yǔ)嫣', 0.9902623891830444), ('虛竹', 0.9894589781761169), ('蕭峰', 0.9883322715759277),('阿紫', 0.9870333075523376),('阿朱', 0.9851636290550232), ('快', 0.9846230745315552),('點(diǎn)頭', 0.983921468257904), ('笑', 0.9805305600166321)]

除了這幾個(gè)人物之外,這位公子哥給人的感覺(jué)也是溫柔多情,“低聲”,“點(diǎn)頭”,“笑”這三個(gè)詞語(yǔ)算是有點(diǎn)貼切了,而“快”字說(shuō)的就是他的凌波微步了。

2.判斷段譽(yù)和王語(yǔ)嫣的相似度

#判斷相似度 model.similarity('段譽(yù)', '王語(yǔ)嫣')0.9902624294045532

看結(jié)果說(shuō)明他們的關(guān)系還是非常強(qiáng)的

3.找出與蕭峰最接近,與王語(yǔ)嫣最不相近的詞

print(model.most_similar(positive=['蕭峰'], negative=['王語(yǔ)嫣']))[('中', 0.6243330836296082), ('內(nèi)力', 0.5441182851791382),('出', 0.5018132328987122), ('間', 0.4797748029232025), ('嗤', 0.46751290559768677), ('派', 0.4565170407295227), ('突然', 0.4523952603340149), ('武功', 0.448074609041214),('簽條', 0.4459651708602905), ('少林', 0.4459308385848999)]

4.找出指定長(zhǎng)度的相關(guān)詞

#找出指定長(zhǎng)度的相關(guān)詞 req_count = 20 for key in model.similar_by_word('李秋水'):if len(key[0]) <= 4:req_count -= 1print(key[0],key[1])if req_count == 0:break連聲 0.9998010396957397 一點(diǎn) 0.9997679591178894 出塵子 0.999755322933197 跪倒 0.9997552633285522 怒氣 0.9997398853302002 摘星子 0.9997320771217346 大怒 0.9997137188911438 頭 0.9997084140777588 長(zhǎng) 0.9996963739395142 冷 0.9996923804283142

結(jié)果還是比較準(zhǔn)的

?

詳細(xì)代碼如下:

import jieba#加載文本,去除空格 def read_words(path):lines = []with open (path,'r') as f:for line in f:line = line.strip()if len(line) != 0:lines.append(line)return lines#加載停用詞列表 def stop_words(path):with open (path,'r',encoding='utf-8') as f:return [line.strip() for line in f]jieba.suggest_freq('段譽(yù)',True) jieba.suggest_freq('蕭峰',True) jieba.suggest_freq('阿紫',True) jieba.suggest_freq('喬峰',True)#jieba.load_userdict('name.txt')#分詞 def cut_words(ready_words):sentences = [jieba.lcut(line) for line in ready_words]sens = []for sentence in sentences:sen = []for word in sentence:if word not in stop_words:sen.append(word)sens.append(sen)return sensready_words = read_words('天龍八部.txt') stop_words = stop_words('stop_words.utf8') token = cut_words(ready_words)#檢驗(yàn)結(jié)果 token[0]#將分詞結(jié)果變成一個(gè)列表 c=[] for sentence in token:for word in sentence:c.append(word)#直接調(diào)用統(tǒng)計(jì)詞頻的函數(shù) # from collections import Counter # top5= Counter(c).most_common(29) # print(top5)#統(tǒng)計(jì)四字詞語(yǔ) dic_tf = {} for w in c:if len(w) == 4 and w not in ['耶律洪基','慕容公子','神仙姊姊','慕容先生','不平道人','天山童姥','智光大師','玄苦大師','太皇太后','小無(wú)相功']:dic_tf[w] = dic_tf.get(w,0) + 1 print(sorted(dic_tf.items(),key=lambda x:x[1],reverse=True)[:20])dic_tf#生成詞云圖 from wordcloud import WordCloud wc = WordCloud(font_path = 'simhei.ttf',background_color="black", # 背景顏色max_words=20 # 詞云顯示的最大詞數(shù))wc.fit_words(dic_tf)import matplotlib.pyplot as plt plt.figure() plt.imshow(wc) plt.axis("off") plt.show()#模型訓(xùn)練 from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all"from gensim.models import Word2Vec model = Word2Vec(token)model.save('model') #保存模型 model = Word2Vec.load('model') #加載模型#判斷與段譽(yù)相近的詞 print(model.most_similar('段譽(yù)')) #判斷相似度 model.similarity('段譽(yù)', '王語(yǔ)嫣') #判斷與蕭峰相近,與王語(yǔ)嫣不相近的詞 print(model.most_similar(positive=['蕭峰'], negative=['王語(yǔ)嫣'])) #找出指定長(zhǎng)度的相關(guān)詞 req_count = 20 for key in model.similar_by_word('李秋水'):if len(key[0]) <= 4:req_count -= 1print(key[0],key[1])if req_count == 0:break

?

總結(jié)

以上是生活随笔為你收集整理的Word2vec词向量工具带你发现不一样的《天龙八部》的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。