摘要: 文章作者:刘知远 (原载于知乎: "NLP日知录" ) 课件来自于学堂在线直播: 在微博和知乎上关注自然语言处理(NLP)技术的朋友,应该都对 NLP太难了 、 自然语言理解太难了 两个话题标签不陌生,其下汇集了各种不仅难煞计算机、甚至让人也发懵的费解句子或歧义引起的笑话。然而,这些例子只是让人直觉 阅读全文
posted @ 2020-02-23 12:40 Yanqiang 阅读(670) 评论(0) 推荐(0) 编辑
摘要: ###1. 比赛信息 比赛地址:阿里云恶意程序检测新人赛 比赛介绍:使用自然语言处理的方法对恶意程序的行为(API调用序列)进行分析,实现对恶意程序鉴别及分类。 ###2. 我的主要工作 1)数据预处理:格式转换csv->txt->pkl,根据fileid分组数据,排序后生成api序列,用于训练; 阅读全文
posted @ 2020-02-20 12:31 Yanqiang 阅读(1568) 评论(0) 推荐(0) 编辑
摘要: 一、概述 训练语料来源:维基媒体 https://dumps.wikimedia.org/backup index.html 汉语数据 用word2vec训练词向量,并用所学得的词向量,计算 pku_sim_test.txt 文件中每行两个词间的余弦距离作为两词相似度,并输出到文件中。 二、数据准备 阅读全文
posted @ 2019-12-27 22:21 Yanqiang 阅读(1899) 评论(0) 推荐(0) 编辑
摘要: 一、概述 本实验做的是一个很常见的数据挖掘任务:新闻文本分类。 语料库来自于搜狗实验室2008年和2012年的搜狐新闻数据, 下载地址:https://www.sogou.com/labs/resource/cs.php 实验工作主要包括以下几步: 1)语料库的数据预处理; 2)文本建模; 3)训练 阅读全文
posted @ 2019-12-27 17:25 Yanqiang 阅读(1202) 评论(0) 推荐(0) 编辑
摘要: 读取原始数据 训练感知机模型 使用自己写的MyPerceptron类训练 perceptron = MyPerceptron() time1 = datetime.datetime.now() perceptron.fit(X_train, y_train) time2 = datetime.dat 阅读全文
posted @ 2019-12-14 10:10 Yanqiang 阅读(981) 评论(0) 推荐(0) 编辑
摘要: 第14章 统计剖析 CKY算法和Earley算法可以有效地表示句法歧义,但却没有提供排歧的手段。概率语法提供的方法是,可以计算歧义的每一种解释的概率,然后从中选择概率最大的解释。 概率上下文无关语法(PCFG)最常用。 14.1 概率上下文无关语法 上下文无关语法由四个参数定义: N(非终极符集合) 阅读全文
posted @ 2019-11-22 16:47 Yanqiang 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 使用word2vec训练词向量 使用word2vec无监督学习训练词向量,输入的是训练数据和测试数据,输出的是每个词的词向量,总共三百个词左右。 求和:然后再将每行数据中的每个词的词向量加和,得到每行的词向量表示。 其他还可以通过求平均,求众数或者最大值等等方法得到每行的词向量表示。 代码如下: 训 阅读全文
posted @ 2019-11-22 10:58 Yanqiang 阅读(1401) 评论(0) 推荐(0) 编辑
摘要: 分类问题 1. 手写数字识别问题 ((1797, 64), (1797,)) 划分70%训练集,30%测试集, ((1257, 64), (540, 64), (1257,), (540,)) 使用默认参数, XGBClassifier(base_score=0.5, booster='gbtree 阅读全文
posted @ 2019-11-10 18:21 Yanqiang 阅读(1890) 评论(0) 推荐(0) 编辑
摘要: XGBoost学习: 集成学习将多个弱学习器结合起来,优势互补,可以达到强学习器的效果。要想得到最好的集成效果,这些弱学习器应当“好而不同”。 根据个体学习器的生成方法,集成学习方法可以分为两大类,序列化方法,并行化方法。序列化方法的代表就是Boosting方法,其中XGBoost和lightGBN 阅读全文
posted @ 2019-11-10 16:34 Yanqiang 阅读(561) 评论(0) 推荐(0) 编辑
摘要: 第六章 隐式马尔可夫模型与最大熵模型 马尔可夫模型发展出了隐式马尔可夫模型HMM和最大熵模型MaxEnt,与马尔可夫有关的最大熵模型称为最大熵马尔可夫模型MEMM。 HMM和MEMM都是序列分类器。给定一个单元(单词、字母、语素、句子等)的序列,可以计算在可能的标号上的概率分布,并选择最好的标号序列 阅读全文
posted @ 2019-11-08 22:03 Yanqiang 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 第五章 词类标注 词类(Part-of-Speech, POS),能够提供关于单词及其近邻成分的大量有用信息。 词类标注的方法:手写规则(基于规则标注),统计方法(隐式马尔科夫模型标注HMM,最大熵标注,基于转换的标注,基于记忆的标注)。 5.1 英语词的分类 词类是根据单词的句法功能和形态功能来定 阅读全文
posted @ 2019-11-08 16:39 Yanqiang 阅读(795) 评论(0) 推荐(0) 编辑
摘要: 主要工作 本周主要是跑了下n gram模型,并调了下参数。大概看了几篇论文,有几个处理方法不错,准备下周代码实现一下。 xgboost参数设置为: param = {'max_depth': 6, 'eta': 0.1, 'eval_metric': 'mlogloss', 'silent': 1, 阅读全文
posted @ 2019-11-03 19:37 Yanqiang 阅读(656) 评论(0) 推荐(0) 编辑
摘要: 1.13 特征选择 sklearn.feature_selection模块中的类可以用于样本集上的特征选择/降维,以提高估计器的精度值,或提高其应用在高维数据集上的性能。 1.13.1 删除低方差的特征 VarianceThreshold是一种简单的特征选择baseline方法。它删除了方差不满足某 阅读全文
posted @ 2019-11-02 12:45 Yanqiang 阅读(2096) 评论(0) 推荐(0) 编辑
摘要: TF IDF模型调参 1. 调TfidfVectorizer的参数 ngram_range, min_df, max_df: "上一篇博客" 调了ngram_range这个参数,得出了ngram_range=(1, 4)时效果最好这个结论,并在线上验证了下。 本篇博客继续调其他的参数。考虑到训练的速 阅读全文
posted @ 2019-10-25 15:44 Yanqiang 阅读(1456) 评论(0) 推荐(0) 编辑
摘要: 第十六章 语言和复杂性 自然语言中的形式化方法,比如有限状态自动机、马尔科夫模型、转录机、音位重写规则、上下文无关语法等,都可以用他们的能力来描述,这种能力等价于它们所描述的现象的复杂性。 Chomsky层级是一种理论方法,可以比较这些形式化方法的表达能力或复杂性。上下文无关语法没有足够的能力来模拟 阅读全文
posted @ 2019-10-24 14:24 Yanqiang 阅读(536) 评论(0) 推荐(0) 编辑
摘要: 第四章 N元语法 本章开篇的两句话很有意思,代表了当时两个学派的思想和矛盾。 一句是"有史以来最伟大的语言学家"乔姆斯基说的:"句子的概率,在任何已知的对于这个术语的解释中,都是一个完全无用的概念"。 他提出了形式语言,坚信可以通过语法规则来处理文字,对概率不屑一顾。 而另一句是语言处理大师贾里尼克 阅读全文
posted @ 2019-10-23 11:46 Yanqiang 阅读(1215) 评论(2) 推荐(0) 编辑
摘要: Colab连接与数据预处理 Colab连接方法见 "上一篇博客" 数据预处理: 训练数据分析 查看行列索引 Index(['file_id', 'label', 'api', 'tid', 'index'], dtype='object') RangeIndex(start=0, stop=8980 阅读全文
posted @ 2019-10-20 15:58 Yanqiang 阅读(1675) 评论(0) 推荐(0) 编辑
摘要: 1. 词袋模型 (Bag of Words, BOW) 文本分析是机器学习算法的一个主要应用领域。然而,原始数据的这些符号序列不能直接提供给算法进行训练,因为大多数算法期望的是固定大小的数字特征向量,而不是可变长度的原始文本。 为了解决这个问题,scikit learn提供了从文本内容中提取数字特征 阅读全文
posted @ 2019-10-20 10:05 Yanqiang 阅读(3532) 评论(0) 推荐(0) 编辑
摘要: 1. 比赛介绍 比赛地址: "阿里云恶意程序检测新人赛" 这个比赛和已结束的 "第三届阿里云安全算法挑战赛" 赛题类似,是一个开放的长期赛。 2. 前期准备 因为训练数据量比较大,本地CPU跑不起来,所以决定用Google的Colaboratory来跑,期间也遇到了几个坑。 首先是文件上传比较慢,几 阅读全文
posted @ 2019-10-12 09:47 Yanqiang 阅读(1435) 评论(0) 推荐(0) 编辑
摘要: 朴素贝叶斯 朴素贝叶斯方法是一组基于贝叶斯定理的监督学习算法,其“朴素”假设是:给定类别变量的每一对特征之间条件独立。贝叶斯定理描述了如下关系: 给定类别变量$y$以及属性值向量$x_1$至$x_n$: $P(y \mid x_1, \dots, x_n) = \frac{P(y) P(x_1, \ 阅读全文
posted @ 2019-10-05 20:13 Yanqiang 阅读(3999) 评论(0) 推荐(0) 编辑
摘要: 决策树算法 决策树算法主要有ID3, C4.5, CART这三种。 ID3算法从树的根节点开始,总是选择信息增益最大的特征,对此特征施加判断条件建立子节点,递归进行,直到信息增益很小或者没有特征时结束。 信息增益:特征 A 对于某一训练集 D 的信息增益 $g(D, A)$ 定义为集合 D 的熵 $ 阅读全文
posted @ 2019-09-27 21:31 Yanqiang 阅读(23551) 评论(0) 推荐(1) 编辑
摘要: 半监督学习 在监督学习中,通常训练数据有input $x^r$, 也有output $\hat{y}^r$。 但是在实际情况下,数据不难收集,但做数据的标记需要花费很大的功夫。 所以半监督学习,就是利用了很多没有标记的数据$x^u$,通常U R。 transductive learning: unl 阅读全文
posted @ 2019-09-25 16:00 Yanqiang 阅读(1206) 评论(0) 推荐(0) 编辑
摘要: 当参数一样多的时候,神经网络变得更高比变宽更有效果。为什么会这样呢? 其实和软件行业的 模块化思想 是一致的。 比如,如果直接对这四种分类进行训练,长发的男孩数据较少,那么这一类训练得到的classifier不是很好。 但如果分成长发or短发,男孩or女孩,这两种基分类器,那么数据就是足够的,可以得 阅读全文
posted @ 2019-09-06 16:54 Yanqiang 阅读(510) 评论(0) 推荐(0) 编辑
摘要: Convolutional Neural Network CNN 卷积神经网络 1. 为什么要用CNN? CNN一般都是用来做图像识别的,当然其他的神经网络也可以做,也就是输入一张图的像素数组(pixel vector),最后输出n个分类(dimension)。 但是为什么不用Fully Conne 阅读全文
posted @ 2019-08-23 15:53 Yanqiang 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 1. Keras Demo2 前节的Keras Demo代码: Keras Demo中的结果不是很好,看一下在Training Data上的结果: 结果如下: 说明在Training Data上结果也不好,接下来开始调参: loss function 分类问题mse不适合,将loss mse fun 阅读全文
posted @ 2019-08-23 15:52 Yanqiang 阅读(515) 评论(7) 推荐(0) 编辑
摘要: 神经网络的表现 在Training Set上表现不好 可能陷入局部最优 在Testing Set上表现不好 Overfitting 过拟合 虽然在机器学习中,很容易通过SVM等方法在Training Set上得出好的结果,但DL不是,所以得先看Training Set上的表现。 要注意方法适用的阶段 阅读全文
posted @ 2019-08-21 10:08 Yanqiang 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 3.1 configuration 3.2 寻找最优网络参数 代码示例: Keras 2.0 代码类似 x_train, y_train解释 小批量梯度下降,速度更快的原因是因为可以并行计算。 完整的Keras演示: 运行结果: Downloading data from https://s3.am 阅读全文
posted @ 2019-08-20 12:34 Yanqiang 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 反向传播 反向传播主要用到是链式法则。 概念: 损失函数Loss Function 是定义在单个训练样本上的,也就是一个样本的误差。 代价函数Cost Function 是定义在整个训练集上的,也就是所有样本误差的总和的平均。有没有这个平均不会影响最后的参数求解结果。 总体损失函数Total Los 阅读全文
posted @ 2019-08-20 10:54 Yanqiang 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 深度学习发展历史 : 感知机和逻辑回归很像,只是没有$sigmoid$激活函数。 深度学习训练的三个步骤 : Step1:神经网络(Neural network) Step2:模型评估(Goodness of function) Step3:选择最优函数(Pick best function) St 阅读全文
posted @ 2019-08-20 09:25 Yanqiang 阅读(272) 评论(0) 推荐(0) 编辑
摘要: Logistic Regression 逻辑回归 逻辑回归与线性回归有很多相似的地方。后面会做对比,先将逻辑回归函数可视化一下。 与其所对应的损失函数如下,并将求max转换为min,并转换为求指数形式,便于计算。 最后得到的是两个伯努利分布(function output & target)的交叉熵 阅读全文
posted @ 2019-08-09 15:43 Yanqiang 阅读(369) 评论(0) 推荐(0) 编辑
摘要: Classification: Probabilistic Generative Model 分类:概率生成模型 如果说对于分类问题用回归的方法硬解,也就是说,将其连续化。比如 $Class 1$ 对应的目标输出为 1, $Class 2$ 对应 1。 则在测试集上,结果更接近1的归为$Class 阅读全文
posted @ 2019-08-09 13:51 Yanqiang 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 梯度下降 Gradient Descent 梯度下降是一种迭代法(与最小二乘法不同),目标是解决最优化问题:${\theta}^ = arg min_{\theta} L({\theta})$,其中${\theta}$是一个向量,梯度是偏微分。 为了让梯度下降达到更好的效果,有以下这些Tips: 1 阅读全文
posted @ 2019-08-09 10:50 Yanqiang 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 这篇论文最早是一篇2016年1月16日发表在Sebastian Ruder的 "博客" 。本文主要工作是对这篇论文与李宏毅课程相关的核心部分进行翻译。 论文全文翻译: An overview of gradient descent optimization algorithms 梯度下降优化算法概述 阅读全文
posted @ 2019-08-05 09:17 Yanqiang 阅读(644) 评论(0) 推荐(0) 编辑
摘要: 李宏毅课程学习笔记总结,以及作业,参考论文总结。 阅读全文
posted @ 2019-07-31 09:06 Yanqiang 阅读(2076) 评论(0) 推荐(0) 编辑
摘要: A more complex model does not always lead to better performance on testing data. Because error due to both of 'bias' and 'variance'. From training dat 阅读全文
posted @ 2019-07-30 16:24 Yanqiang 阅读(483) 评论(0) 推荐(0) 编辑
摘要: Regression 回归 应用领域包括:Stock Market Forecast, Self driving car, Recommondation,... Step 1: Model 对于宝可梦的CP值预测问题,假设为一个最简单的线性模型 y = b + $\sum w_i x_i$ $x_i 阅读全文
posted @ 2019-07-30 11:42 Yanqiang 阅读(763) 评论(0) 推荐(0) 编辑
摘要: 作业任务: 使用98年人民日报语料库进行词性标注训练及测试。 作业输入: 98年人民日报语料库(1998-01-105-带音.txt),用80%的数据作为训练集,20%的数据作为验证集。 运行环境: Jupyter Notebook, Python3 作业方法: 使用简单的统计词频的方法,对于单词的 阅读全文
posted @ 2019-07-28 16:27 Yanqiang 阅读(673) 评论(9) 推荐(0) 编辑
摘要: 作业任务: 使用98年人民日报语料库进行中文分词训练及测试。 作业输入: 98年人民日报语料库(1998 01 105 带音.txt),用80%的数据作为训练集,20%的数据作为验证集。 运行环境: Jupyter Notebook, Python3 作业方法: 实现了前向匹配算法的分词功能。 源码 阅读全文
posted @ 2019-07-27 20:09 Yanqiang 阅读(600) 评论(0) 推荐(0) 编辑
摘要: Machine Learning == Looking for a Function AI过程的解释:用户输入信息,计算机经过处理,输出反馈信息(输入输出信息的形式可以是文字、语音、图像等)。 因为从输入到输出的处理不是简单的数学运算,甚至很多时候科学家并不知道如何来实现这个过程。 所以最初的时候科 阅读全文
posted @ 2019-07-18 12:50 Yanqiang 阅读(693) 评论(0) 推荐(0) 编辑
摘要: 第三章 Android的事件处理 Android提供两种事件处理方式,基于回调和基于监听器。前者常用于传统图形界面编程中,而后者在 开发中常用。 3.1 事件处理概述 对于基于回调的事件处理而言,主要是 重写 组件特定的回调方法,或者重写 的回调方法,一般用于处理通用性的事件。 对于监听的事件处理而 阅读全文
posted @ 2016-07-03 16:56 Yanqiang 阅读(408) 评论(0) 推荐(0) 编辑