zoukankan      html  css  js  c++  java
  • word2vec初探(用python简单实现)

    为什么要用这个?

    因为看论文和博客的时候很常见,不论是干嘛的,既然这么火,不妨试试.

    如何安装

    1. 从网上爬数据下来
    2. 对数据进行过滤、分词
    3. 用word2vec进行近义词查找等操作

    完整的工程传到了我的github上了:https://github.com/n2meetu/word2vec.git

    运行结果:

    需要安装的包,可以用pycharm的preference:


    点「+」加号

    同样,点「+」加号。过一会儿会提示你安装是否成功的。

    整个的文件结构:


    -语料(网上爬下来的)
    -自定义词典
    -主要的python文件

    主要的py文件:

    # -*- coding: utf-8-*-
    import jieba
    from gensim.models import word2vec
    
    #  去掉中英文状态下的逗号、句号
    def clearSen(comment):
        comment = comment.strip(' ')
        comment = comment.replace('、','')
        comment = comment.replace('~','。')
        comment = comment.replace('~','')
        comment = comment.replace('{"error_message": "EMPTY SENTENCE"}','')
        comment = comment.replace('…','')
        comment = comment.replace('
    ', '')
        comment = comment.replace('	', ' ')
        comment = comment.replace('f', ' ')
        comment = comment.replace('/', '')
        comment = comment.replace('、', ' ')
        comment = comment.replace('/', '')
        comment = comment.replace(' ', '')
        comment = comment.replace(' ', '')
        comment = comment.replace('_', '')
        comment = comment.replace('?', ' ')
        comment = comment.replace('?', ' ')
        comment = comment.replace('了', '')
        comment = comment.replace('➕', '')
        return comment
    
    # 用jieba进行分词
    comment = open('./corpus/comment.txt').read()
    comment = clearSen(comment)
    jieba.load_userdict('./user_dict/userdict_food.txt')
    comment = ' '.join(jieba.cut(comment))
    
    # 分完词后保存到新的txt中
    fo = open("./corpus/afterSeg.txt","w")
    fo.write(comment)
    print("finished!")
    fo.close()
    
    # 用 word2vec 进行训练
    sentences=word2vec.Text8Corpus(u'./corpus/afterSeg.txt')
    # 第一个参数是训练语料,第二个参数是小于该数的单词会被剔除,默认值为5, 第三个参数是神经网络的隐藏层单元数,默认为100
    model=word2vec.Word2Vec(sentences,min_count=3, size=50, window=5, workers=4)
    
    y2=model.similarity(u"不错", u"好吃") #计算两个词之间的余弦距离
    print(y2)
    
    for i in model.most_similar(u"好吃"): #计算余弦距离最接近“滋润”的10个词
        print(i[0],i[1])
    
    # 训练词向量时传入的两个参数也对训练效果有很大影响,需要根据语料来决定参数的选择,好的词向量对NLP的分类、聚类、相似度判别等任务有重要意义
    

    清洗数据的clearSen()不要笑。萌新就是这样很傻很粗暴的……

  • 相关阅读:
    Asp.net性能优化总结(一)
    Visual C#常用函数和方法集汇总
    ASP.net下大文件上传的解决方案及WebbUpload组件源码
    正则表达式学习
    在Asp.net中为图像加入版权信息
    Cognos 维度函数
    Cognos8.3函数使用手册(二)
    cognos更新步聚
    Cognos8.3函数使用手册(一)
    Cognos 8 报表备份和恢复
  • 原文地址:https://www.cnblogs.com/n2meetu/p/8124267.html
Copyright © 2011-2022 走看看