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)
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不加班程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值