文章目录
基础概念及NLP基础
基础概念
简单的机器学习流程
将学习算法细分:
训练集/验证集(开发集)/测试集
在机器学习和模式识别等领域中,一般需要将样本分成独立的三部分训练集(train set),验证集(validation set ) 和测试集(test set)。其中训练集用来估计模型,验证集用来调超参数,测试集用来测试模型准确度
有监督机器学习和无监督机器学习
有监督机器学习:我们要教会计算机做某些事情
无监督机器学习:让计算机自己去做某些事情
有监督机器学习就是:我们给算法一个数据集,其中包含了正确答案,算法的目的就是给出更多的正确答案
无监督机器学习就是:我们给算法一个数据集,但是不给他正确答案,而让计算机自己去学习
NLP实例1:马蜂窝评论造假
这便使用到了NIP中的文本相似度分析
文本相似度分析:
从海量数据(文章,评论)中,把相似的数据挑选出来
步骤:
- 把评论翻译成机器看的懂的语言
- 使用机器看的懂得算法轮询去比较每一条和所有评论的相似程度
- 把相似的评论挑出来
步骤详解:
- 1.把评论翻译成机器看的懂的语言
1) 分词:将句子拆分
如:“距离川沙公路较近,但是公交指示不对,如果是"蔡陆线"的话,会非常麻烦.建议用别的路线.房间较为简单.”
这句话可拆分成
“[‘距离’, ‘川沙’, ‘公路’, ‘较近’, ‘,’, ‘但是’, ‘公交’, ‘指示’, ‘不’, ‘对’, ‘,’, ‘如果’, ‘是’, ‘"’, ‘蔡陆线’, ‘"’, ‘的话’, ‘,’, ‘会’, ‘非常’, ‘麻烦’, ‘.’, ‘建议’, ‘用’, ‘别的’, ‘路线’, ‘.’, ‘房间’, ‘较为简单’, ‘.’]”。
2) 制作词袋模型(bag-of-word)
给第一步分好的词都给一个对应的值{’"’: 0, ‘,’: 1, ‘.’: 2, ‘不’: 3, ‘会’: 4, ‘但是’: 5, ‘公交’: 6, ‘公路’: 7, ‘别的’: 8, ‘如果’: 9, ‘对’: 10, ‘川沙’: 11, ‘建议’: 12, ‘房间’: 13, ‘指示’: 14, ‘是’: 15, ‘用’: 16, ‘的话’: 17, ‘蔡陆线’: 18, ‘距离’: 19, ‘路线’: 20}
3)用词袋模型制作语料库(corpus)
key表示词语,value值为该词语出现的次数。[(0, 2), (1, 3), (2, 3), (3, 1), (4, 1), (5, 1), (6, 1), (7, 1), (8, 1), (9, 1), (10, 1), (11, 1), (12, 1), (13, 1), (14, 1), (15, 1), (16, 1), (17, 1), (18, 1), (19, 1), (20, 1), (21, 1), (22, 1), (23, 1), (24, 1)]
4) 把评论变成词向量
省略掉key。[2,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
- 2.使用机器看的懂得算法轮询去比较每一条和所有评论的相似程度(TF-IDF)
TF-IDF:
不考虑停用词(就是没什么意义的词),找出一句话中出现次数最多的单词,来代表这句话,这个就叫做词频(TF – Term Frequency),相应的权重值就会增高
如果一个词在所有句子中都出现过,那么这个词就不能代表某句话,这个就叫做逆文本频率(IDF – Inverse Document Frequency)相应的权重值就会降低
TF-IDF = TF * IDF
- 3.把相似的评论挑出来
情感分类
情感分类是指根据文本所表达的含义和情感信息将文本划分成褒扬或者贬义的两种或几种类型,是对文本作者情感倾向、观点或者态度的划分。
分类就是把已知的信息分到准备好的类别中
需要做的准备:分好类的数据集
当我们有了一定量的数据积累之后,最简单的想法就是:新来的数据集和哪个已知的数据相似,我们就认为他属于哪个类别
- 方法: 逻辑回归、 KNN
逻辑回归:是一种分类算法
只要我们输入计算机能看得懂的数据,计算机就会自动的进行学习与记录,一旦模型建立,当我们再输入新的数据的时候,模型就会自动识别出相应的类型
那么我们要做的关键就在于:把数据转化成算法能读懂的形式,“喂”给算法,然后等着就行了
代码实现
# encoding = utf-8
import csv
import jieba
from gensim import