我爱编程程序员NLP(MLP)的机器学习

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

2018-02-27  本文已影响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)

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

向量化的文本

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

上一篇下一篇

猜你喜欢

热点阅读