藝賽旗 RPA9.0全新首發(fā)免費下載 點擊下載
http://www.i-search.com.cn/index.html?from=line1
python 詞向量訓練 以及聚類
#!/usr/bin/env Python3
author = ‘未昔/angelfate’
date = ‘2019/8/14 17:06’
import pandas as pd
import jieba,re,os
from gensim.models import word2vec
import logging
class Word2Vec_Test(object):
def init(self):
self.csv_path = ‘DouBanFilm_FanTanFengBao4.csv’
self.txt_path = ‘comment.txt’
```
首先提取 csv的 評論列內容,到txt
1、讀取txt評論內容
def read_file(self): """ 訓練模型 :return: """ # jieba.load_userdict(self.txt_path) logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO, filename='test_01.log') filename = self.txt_path # 測試文本 pre, ext = os.path.splitext(filename) # 輸入文件分開前綴,后綴 pre=test_01 ext=.txt corpus = pre + '_seg' + ext fin = open(filename, encoding='utf8').read().strip(' ').strip('\n').replace('\n\n', '\n') # strip()取出首位空格,和換行符,用\n替換\n\n stopwords = set(open('北京大學停用詞.txt', encoding='gbk').read().strip('\n').split('\n')) # 讀入停用詞
2、分詞,將訓練文本中的詞做處理,不能包含停用詞中的詞,以及長度少于等于1的詞,去標點
text = ’ ‘.join(
[x for x in jieba.lcut(fin) if x not in stopwords and len(x) > 1 and x != ‘\n’]) # 去掉停用詞中的詞,去掉長度小于等于1的詞
print(text)
results = re.sub(’[()::?“”《》,。!·、\d ]+’, ’ ‘, text) # 去標點
open(corpus, ‘w+’, encoding=‘utf8’).write(results) # 按行分詞后存為訓練語
3、訓練模型
sentences = word2vec.LineSentence(corpus)
# sentences1 = word2vec.Text8Corpus(corpus) #用來處理按文本分詞語料
# print(’=–=-=-=-=-=’,sentences)
model = word2vec.Word2Vec(sentences, size=12, window=25, min_count=2, workers=5, sg=1,
hs=1)
4、保存模型
model.save(“test_01.model”) # 保存模型
model.wv.save_word2vec_format(‘test_01.model.txt’, ‘test_01.vocab.txt’,
binary=False)
5、加載模型,驗證模型
def yan(self):
“”"
第五:加載模型,驗證模型
:return:
“”"
# 5詞向量驗證# 加載訓練好的模型model = word2vec.Word2Vec.load("test_01.model") role1 = ['反貪', 'ICAC', '廉政'] role2 = ['古天樂', '電影'] pairs = [(x, y) for x in role1 for y in role2]print(pairs)for pair in pairs: print("-- [%s]和[%s]的相似度為:" % (pair[0], pair[1]), model.similarity(pair[0], pair[1])) # 預測相似性
個詞的相關詞列表
figures = [‘反貪’, ‘ICAC’, ‘廉政’, ‘古天樂’, ‘電影’, ‘警察’, ‘廉政公署’, ‘香港’]
for figure in figures:
print("> 和[%s]最相關的詞有:\n" % figure,
‘\n’.join([x[0].ljust(4, ’ ‘) + str(x[1]) for x in model.most_similar(figure, topn=10)]),
sep=’’)
結果
C:\Python\python.exe E:/python/Study/機器學習/詞向量/TEST1/test.py
[(‘反貪’, ‘古天樂’), (‘反貪’, ‘電影’), (‘ICAC’, ‘古天樂’), (‘ICAC’, ‘電影’), (‘廉政’, ‘古天樂’), (‘廉政’, ‘電影’)]
– [反貪]和[古天樂]的相似度為: 0.8193734
– [反貪]和[電影]的相似度為: 0.79485226
– [ICAC]和[古天樂]的相似度為: 0.67751527
– [ICAC]和[電影]的相似度為: 0.56181175
– [廉政]和[古天樂]的相似度為: 0.87820566
– [廉政]和[電影]的相似度為: 0.7926007
和[反貪]最相關的詞有:
好看 0.9580947160720825
不行 0.9477688074111938
小時候 0.9470022320747375
熱鬧 0.9458567500114441
插入 0.9457867741584778
愛好者 0.9425768256187439
出戲 0.9419222474098206
痕跡 0.9414110779762268
算是 0.9400239586830139
片子 0.9387757182121277
和[ICAC]最相關的詞有:
懲教署 0.9477450251579285
官員 0.9427414536476135
奸帥 0.9290784597396851
二代 0.926984429359436
故事 0.9213033318519592
退一步 0.921079695224762
諷刺 0.9191040396690369
墜機 0.9189454317092896
斗狠 0.9186890125274658
無疑 0.9165976047515869
和[廉政]最相關的詞有:
牽強 0.9715588092803955
今天 0.9601073861122131
傻傻 0.9586002826690674
路上 0.9573702216148376
一步 0.9561094045639038
風雨 0.9548968076705933
對比 0.9547584056854248
套餐 0.9538712501525879
愛好者 0.9530250430107117
熟悉 0.9524191617965698
和[古天樂]最相關的詞有:
依舊 0.9562309384346008
想起 0.9511849284172058
熟悉 0.9502787590026855
年輕 0.9482583999633789
再次 0.9425556659698486
張智霖 0.9382885694503784
一種 0.9350777864456177
IP 0.9331182241439819
草率 0.9291275143623352
西裝 0.9291061162948608
和[電影]最相關的詞有:
看著 0.9870060682296753
哈哈哈 0.9635094404220581
質感 0.9586584568023682
加油 0.9530031681060791
倉促 0.9522775411605835
院線 0.9515659809112549
昔日 0.950602650642395
套路 0.9499426484107971
緊張 0.9478718042373657
不合理 0.9468604326248169
和[警察]最相關的詞有:
顏值 0.9682283401489258
程度 0.9645314812660217
第三集 0.9635794162750244
沒人 0.9632000923156738
黑古 0.9607852101325989
致敬 0.9602598547935486
破壞 0.9601216316223145
回歸 0.9591646790504456
多年 0.958872377872467
一堆 0.9572871923446655
和[廉政公署]最相關的詞有:
可能 0.9681879281997681
還會 0.9589521884918213
bug 0.9557142853736877
看到 0.9497145414352417
質感 0.9490318298339844
醬油 0.9447331428527832
服氣 0.9417837858200073
感謝 0.940988302230835
為啥 0.9371879696846008
面前 0.9368493556976318
和[香港]最相關的詞有:
正面 0.966416597366333
驚險 0.9605911374092102
電影版 0.9520364999771118
影城 0.9459754228591919
場面 0.9448919296264648
粵語 0.9435780048370361
先系 0.9433020949363708
案件 0.9400972127914429
警匪 0.9388967156410217
上映 0.9355912804603577
None
Process finished with exit code 0