Word2Vec提取關鍵詞,詞語相似度

對於瞭解深度學習、自然語言處理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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章