机器学习折腾记(3-1):自然语言处理(NLP)初探

彼得·德鲁克说,我们总是高估一年的变化,而低估了五年十年的变化,因为我们总是忘记“复利”的存在。(《卓有成效的管理者》)

机器学习虽然很受欢迎,但是真当要静下心来学习时,我们遇见的困难又是巨大的,面对很高的学习成本,与陡峭的学习曲线,有时并不只是单单说一两句坚持就能做好的。

比如,我们可能需要下面的相关的基础知识——

1、基本数学知识
2、线性代数
3、微积分
4、概率和信息论
5、编程语言(python、R、java、scala等)

别泄气,基础虽然需要打牢,但是我始终认为,先建立起一个连接(兴趣)更重要,因为学习机器学习不只是毅力足够好就行的。

将原始文本转化为词袋

词袋 (Bag of Words,简称BoW) 是一种统计某个词在一份文档中出现次数的算法。统计所得的词频数据可以用于比较文档并测量其相似性,具体应用包括搜索、文档分类、主题建模等。

我们使用Scikit包里的CountVectorizer来先统计词频,书中例子是按照英文单词的方式来统计的,先别急,我先上手一个简单的例子试试看,虽然到中文的统计还有很长的路要走。

这里就要提到一个概念——NLP(Natural Language Processing),中文叫自然语言处理,现在大家熟悉的机器翻译主要研究和实践的就是对自然语言的处理。

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。(wiki)

先看一张图,大致了解一下NLP到底干了什么,我们输入一句话:持续践行,从每天完成一件事开始。

注意本地保存的几个文件的路径,需要修改DIR。

小结

我们现在的文本预处理过程包含以下步骤:
1、切分文本;
2、扔掉出现过于频繁,而又对检测相关帖子没有帮助的词语;
3、扔掉出现频率很低,只有很小可能出现在未来帖子中的词语;
4、统计剩余的词语;
5、考虑整个语料集合,从词频统计中计算TF-IDF值。

其实现在我用的多的切词工具是Ansj中文分词(这是一个基于n-Gram+CRF+HMM的中文分词的java实现),是一个对汉语比较好的切词工具,不过切词只是第一步,到后面的泛化,意图识别可能才是更重要的,后续我会专门讲基于自然语言处理的机器学习,然后再去说深度学习的方法。

今天主要学习了NLP的基础,虽然基础远远比这里说的复杂得多。

机器学习中难免出现很多生僻的概念,如果看不懂可以先记住,跳过,但一定要抓住核心脉络去学,不要为了学而学,因为很容易就放弃了。

参考资源

1、《机器学习系统设计》
2、《深度学习》
3、scikit
4、https://deeplearning4j.org/cn/bagofwords-tf-idf
5、https://www.zhihu.com/question/59227800
6、https://www.ltp-cloud.com/demo/
7、https://zh.wikipedia.org/wiki/%E8%AF%8D%E8%A2%8B%E6%A8%A1%E5%9E%8B
8、https://www.csdn.net/article/2015-06-19/2825009
9、https://zh.wikipedia.org/wiki/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86

文章知识点与官方知识档案匹配,可进一步学习相关知识OpenCV技能树首页概览11171 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年3月21日
下一篇 2018年3月21日

相关推荐