對於瞭解深度學習、自然語言處理NLP的讀者來說,Word2Vec可以說是家喻戶曉的工具,儘管不是每一個人都用到了它,但應該大家都會聽說過它——Google出品的高效率的獲取詞向量的工具。
說到提取關鍵詞,一般會想到TF-IDF和TextRank,大家是否想過,Word2Vec還可以用來提取關鍵詞?而且,用Word2Vec提取關鍵詞,已經初步含有了語義上的理解,而不僅僅是簡單的統計了,而且還是無監督的!
鏈接: https://pan.baidu.com/s/1dF7oTH3 密碼: uw4r
包含文件:word2vec_wx, word2vec_wx.syn1neg.npy, word2vec_wx.syn1.npy, word2vec_wx.wv.syn0.npy,4個文件都是Gensim加載模型所必需的。具體每個文件的含義我也沒弄清楚,word2vec_wx大概是模型聲明,word2vec_wx.wv.syn0.npy應該就是我們所說的詞向量表,word2vec_wx.syn1.npy是隱層到輸出層的參數(Huffman樹的參數),word2vec_wx.syn1neg.npy就不大清楚了~
import sys
try:
reload(sys)
sys.setdefaultencoding('utf-8')
except:
pass
import codecs
from textrank4zh import TextRank4Keyword, TextRank4Sentence
from gensim import models as gmodel
import pandas as pd
model = gmodel.Word2Vec.load("./word2vec/word2vec_wx")
#textrank算法查找text文本中num個關鍵詞
def GetKeyWords(text,num):
tr4w = TextRank4Keyword()
tr4w.analyze(text=text, lower=True, window=2) # py2中text必須是utf8編碼的str或者unicode對象,py3中必須是utf8編碼的bytes或者str對象
return tr4w.get_keywords(num, word_min_len=1)
#textrank算法查找text文本中num個關鍵詞中存在的關鍵短語
def GetKeyPhrases(text,num):
tr4w = TextRank4Keyword()
tr4w.analyze(text=text, lower=True, window=2) # py2中text必須是utf8編碼的str或者unicode對象,py3中必須是utf8編碼的bytes或者str對象
return tr4w.get_keyphrases(keywords_num=num, min_occur_num= 2)
#textrank算法查找text文本中num個關鍵句子
def GetKeySentences(text,num):
sentence = TextRank4Sentence()
sentence.analyze(text=text,lower=True)
s_list = sentence.get_key_sentences(num=num,sentence_min_len=5)
return s_list
#word2vec計算兩個詞的相似度
def ComputeWordSimilar(word1,word2):
sim = model.similarity(word1, word2)
return sim
#word2vec計算兩個詞列表的相似度
def ComputeWordListSimilar(list1, list2):
list_sim = model.n_similarity(list1, list2)
return list_sim
##word2vec查找最相近的詞
def findMostSimilarWord(word):
result = model.most_similar(word)
return result
if __name__ == '__main__':
text1 = codecs.open('01.txt', 'r', 'utf-8').read()
text2 = codecs.open('02.txt', 'r', 'utf-8').read()
#得到關鍵詞
a=GetKeyWords(text1,10)
print( '關鍵詞:' )
'''
lista、listb 分別表示兩個文本提取關鍵詞的到的關鍵詞集合
'''
listb=[]
lista=[]
for item in a:
lista.append(item.word)
print(item.word, item.weight)
b=GetKeyWords(text2,10)
print( '關鍵詞2:' )
for item in b:
listb.append(item.word)
print(item.word, item.weight)
#ComputeWordListSimilar()
#得到關鍵詞語
c=GetKeyPhrases(text1,20)
d=GetKeyPhrases(text2,20)
print('關鍵短語:' )
for phrase in c,d:
print(phrase)
# 導入模型
e=findMostSimilarWord([u'海賊王'])
print(pd.Series(e))
f=ComputeWordSimilar(u'活動',u'掌握')
print(f)