Word2Vec提取关键词,词语相似度

来源:互联网 发布:网站搜索引擎优化方案 编辑:程序博客网 时间:2024/04/28 01:34

对于了解深度学习、自然语言处理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 systry:    reload(sys)    sys.setdefaultencoding('utf-8')except:    passimport codecsfrom textrank4zh import TextRank4Keyword, TextRank4Sentencefrom gensim import models as gmodelimport pandas as pdmodel = 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 resultif __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)
阅读全文
0 0
原创粉丝点击