Day 30 关於这次的铁人赛,那些没能提到的事情

终於到最後一天了,可喜可贺可喜可贺!其实我也知道在这30天的期间内还有很多没能讲到的东西,既然都到最後一天了,那今天就来大概介绍一下那些没能提到的事情吧!

然後在国庆连假时我们小组里有人忘记发文,明明都写到26天结果却因此断赛了,哭阿

1.N元语法(N-gram)

其实现在想想,在介绍自然处理(Natural Language Processing,简称 NLP)的方法时,也许应该先提一下这个方法的...毕竟 N-gram 是一种基於机器学习的语言模型。要知道所有的语言模型 (Language Model)在做的其实都是一件事,那就是「预测一个句子/词的机率」说。比方说:

  1. 情绪分类就是预测输入的句子/文章的情绪为正面/负面的机率
  2. 语言翻译就是预测A语言的某个辞汇翻译成B语言时,哪个词汇机率比较高
  3. 搜寻结果就是根据我们输入的搜寻内容来进行预测
  4. 预测文字就是在我们输入的时候,预测我们接下来的输入内容

众上所述,而 N-gram 模型是一种语言概率模型,它的输入是一句话,输出则是这句话出现的概率。常用的有二元语法 Bi-gram(n=2)和三元语法 Tri-gram(n=3),它会将文本里面的内容按照字节进行大小为 N 的滑动窗口操作,形成了长度是 N 的字节片段序列。

举个例子,假设我们输入的句子是『 I am a student 』,则:
Bi-gram:{(I,am),(am,a),(a,stuedent)}
Tri-gram:{(I,am,a),(am,a,student)}

而每一个字节片段称为 gram,我们会对所有 gram 的出现频率进行统计。之後假设第 N 个词的出现只与前面 N-1 个词相关,而与其它任何词都不相关,则整句话的机率就是各个词出现机率的乘积。

TF-IDF

既然都提到 N-gram 了,那就顺便来介绍一下 TF-IDF 好了。因为 TF-IDF 很常和 N-gram 搭配在一起来做像是文章的关键字提取或是文章的相似度比较、文章分类之类的任务。

TF-IDF 是一种统计方法,主要是用来评估一个词对於一篇文章的重要程度。TF-IDF 演算法包含了两个部分:词频(term frequency,TF)跟逆向文件频率(inverse document frequency,IDF)。

  • 词频指的是某一个给定的词语在该文件中出现的频率,第 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 个词出现在第 https://chart.googleapis.com/chart?cht=tx&chl=%24d%24 篇文件的频率记做 https://chart.googleapis.com/chart?cht=tx&chl=%24tf_%7Bt%2Cd%7D%24%20
  • 而逆向文件频率则是指一个辞汇出现在语料库内的频率。假设词汇 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 总共在 https://chart.googleapis.com/chart?cht=tx&chl=%24d_t%24 篇文章中出现过,则词汇 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 的 IDF 定义成 https://chart.googleapis.com/chart?cht=tx&chl=%24idf_t%20%3D%20%7Blog(%7BD%20%5Cover%20d_t%7D)%7D%24
    如果辞汇 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 在很多篇文章内都出现过,则 https://chart.googleapis.com/chart?cht=tx&chl=%24d_t%24 会很大,而 IDF 就会很小。

我们将第 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 个词汇对於第 https://chart.googleapis.com/chart?cht=tx&chl=%24d%24 篇文件的 TF-IDF 权重定义为 https://chart.googleapis.com/chart?cht=tx&chl=%24w_%7Bt%2Cd%7D%24 = https://chart.googleapis.com/chart?cht=tx&chl=%24tf_%7Bt%2Cd%7D%24 x https://chart.googleapis.com/chart?cht=tx&chl=%24idf_t%24 。当辞汇 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 很常出现在文章 https://chart.googleapis.com/chart?cht=tx&chl=%24d%24 内却不常出现在其他文章内时, https://chart.googleapis.com/chart?cht=tx&chl=%24tf_%7Bt%2Cd%7D%24https://chart.googleapis.com/chart?cht=tx&chl=%24idf_t%24 相乘起来就会很大,我们就能够知道说辞汇 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 对於文章 https://chart.googleapis.com/chart?cht=tx&chl=%24d%24 而言非常重要了。

卷积神经网路 CNN


因为传统的神经网路只能处理一维资料的缘故,因此它有个问题就是他往往会忽略资料的形状。如果我们使用传统的神经网路去做图像识别的话,就需要将2维的图片打散成1维。而 CNN 就是为了处理这类问题而被开发出来的架构。
(还记得我们在介绍 Self-Attention 时有提到,有人打算用 CNN 的架构来处理 RNN 的问题吗? 这下你就知道 CNN 的架构有多灵活了吧)

CNN 相较传统的架构多了 Convolutional layer(卷积层)及 Pooling layer (池化层),用来维持形状资讯并且避免参数大幅增加。其中,卷积层主要负责做特徵撷取;池化层负责降低参数。在加入此两层後,最後再加入全连结层并搭配 Softmax 函式来决定输出结果。

reference

https://zhuanlan.zhihu.com/p/32829048
https://taweihuang.hpd.io/2017/03/01/tfidf/
https://chtseng.wordpress.com/2017/09/12/%E5%88%9D%E6%8E%A2%E5%8D%B7%E7%A9%8D%E7%A5%9E%E7%B6%93%E7%B6%B2%E8%B7%AF/

结尾

不知不觉30天就过去了,虽然我们介绍的东西可能很简单,但是我其实也不过是个嫩嫩的学生,可能很多东西的内容介绍的并不完善,还可能讲错,但是透过这些回顾,我也理解了自己哪些地方不足,也算是一次难能可贵的经验。


<<:  30天学会 Python: Day 29- 云端资料库

>>:  [Day30] 前面就是终点,该写什麽呢?

从零开始的8-bit迷宫探险【Level 19】这个相遇我等了一辈子了-侦测主角与怪物接触

山姆回想着刚刚看到的雪人怪,还心有余悸。 转了个弯,继续找寻水晶。 「碰!」山姆迎头撞上了白色的物...

电子书阅读器上的浏览器 [Day25] 支援多 Activity

虽然 browser 已经可以支援多个分页浏览了(全在同一个 Activity 中做切换),但有些时...

Day03:浅谈 Git 和 GitHub

Git Git 是一个开源的分布式版本控制系统, 允许我们跟踪档案异动, 最初目的是为更好地管理 L...

[DAY 14] 轮回故事里的那些因果 : RNN 简介

前言 这一场 LOL 的掉排位来自於之前自己已经雷了千万场 ---阿峻20190928 在资料的世界...

预编译 - 变数和function的被建立、初始化/预编译、执行的全纪录

你以为JS拿来就乖乖照着我们打的一行一行跑吗?太天真了,我说我~~ 变数怎麽存,存哪里,在哪里叫得到...