美文网首页我爱编程程序员NLP(MLP)的机器学习
机器学习基础教程实践(一)——中文的向量化

机器学习基础教程实践(一)——中文的向量化

作者: 伦文聚 | 来源:发表于2018-02-27 13:57 被阅读0次

    机器学习已经是一个热度逐渐消退的话题了,现在都在聊区块链了,所以这里我可以说说机器学习了。很多人很喜欢把简单的东西说得很复杂,让别人听不懂,这样别人就可以崇拜自己。但是作为一个的产品,我对此表示深深的鄙视。好了,废话不说了,回到正题。

    机器其实是非常笨的,特别是对中文的理解,谁让我们中文博大精深,这也对生长在中国的IT从业人员提了更高的要求。

    机器学习可以简单理解为推演学习,举例来说:你告诉机器:一只乌鸦是黑的,另外一只乌鸦也是黑的,……N个乌鸦也是黑的,那么他们就会推演出来天下的乌鸦都是黑的……。

    机器对中文是理解不了的语言,所以你要告诉机器乌鸦是黑的,首先得把输入:乌鸦,输出:黑变成机器能懂的语言告诉他,下面我们一起来看看怎样告诉机器这个事情。

    机器环境准备:

    1、centos 7.4 64位

    2、python2.7

    3.pip

    7.4里面会自带python2.7.5,这里不说了,pip需要自己安装,安装比较折腾

    1、下载安装脚本

    wget https://bootstrap.pypa.io/get-pip.py

    下载安装脚本

    2、安装pip

    python get-pip.py

    2、安装pip

    3、安装jieba分词

    pip install jieba

    3、结巴分词安装

    4、安装nose,不然安装word2vec会报错

    pip install nose

    4安装nose

    5、安装词转向量插件(部分同学反馈安装报错,大家可以根据提示,一般是缺少Cython和python-dev,可以先执行pip install Cython和yum install python-devel)

    pip install word2vec

    5、词转向量插件

    到这里,环境已经准备完毕了,后面我们开始正式说怎样把中文向量化,变成机器能理解的语言。

    1、vim test.txt,编辑你需要转变位向量的文本,这里文本随便你自己弄。

    2、编写分词脚本,使用结巴分词,对文本进行分词

    vim test-1.py

    ##!/usr/bin/env python

    ## coding=utf-8

    import jieba

    filePath='test.txt'

    fileSegWordDonePath ='testDone.txt'

    # 按行读取文本内容

    fileTrainRead = []

    with open(filePath) as fileTrainRaw:

        for line in fileTrainRaw:

            fileTrainRead.append(line)

    #

    def PrintListChinese(list):

        for i in range(len(list)):

            print list[i],

    #使用结巴分词进行分词

    fileTrainSeg=[]

    for i in range(len(fileTrainRead)):

    #通过[0:-1]控制分词的范围

        fileTrainSeg.append([' '.join(list(jieba.cut(fileTrainRead[i][0:-1],cut_all=False)))])

        if i % 100 == 0 :

            print i

    # 保存分词结果

    with open(fileSegWordDonePath,'wb') as fW:

        for i in range(len(fileTrainSeg)):

            fW.write(fileTrainSeg[i][0].encode('utf-8'))

            fW.write('\n')

    2、vim test-2.py,编写转换的脚本,对分词后的中文转为机器能理解的向量

    import word2vec

    word2vec.word2vec('testDone.txt', 'test.bin', size=300,verbose=True)

    3、执行转换脚本

    python test-2.py

    3、转换为向量

    到了这里,已经成功将你要给机器讲的中文转化为机器能理解的向量了,好奇的你如果向看看结果是怎样的,那就再编辑一个python脚本

    4、vim modelview.py

    import word2vec

    model = word2vec.load('test.bin')

    print(model.vectors)

    然后执行这个脚本,就可以看到向量化的文本了,如图

    向量化的文本

    到这里,第一讲就结束了,后面我会再给大家讲怎样利用向量化的文本进行训练和学习

    相关文章

      网友评论

        本文标题:机器学习基础教程实践(一)——中文的向量化

        本文链接:https://www.haomeiwen.com/subject/cyrpxftx.html