基于NLP和机器学习技术做一个文章评分优化系统(一)
项目背景
笔者是从去年12月开始学习NLP,契机是论文选题,导师希望我们可以往深度学习这一领域靠拢。那会儿和垲酱讨论,我很想做NLP相关的项目,在否定掉诸如“通过评论预测票价”、“新闻文本挖掘预测股价”等等一堆略显幼稚或不太切实的想法后,我憋出了两个选题,一个是对起点中文网的小说内容进行文本挖掘做推荐系统,一个是对自媒体文章进行文本挖掘做优化系统,当时我和垲酱就一人领走一个开始做,当时对NLP,基本上是一窍不通,只能从头学起。不过最后两个项目都“变异”了,这是后话。
其实当时选那个选题是因为垲酱正好有一个微信文章的爬虫代码,我想这样数据源问题就解决了吧!但后来微信爸爸告诉了我什么是too young,too simple,将来会具体说爬虫部分,这里先按下不表。这里也要非常感谢垲酱,爬虫部分基本上就是在垲酱提供的code下修修补补完成的。
这一章会先跟大家介绍整个项目的背景和一些基础知识。在后续的章节中,主要是数据和代码。这里要说的是,最后完成的系统虽然基本上可以满足预想的功能需求,但是实用性真的非常非常有待考量!!(笑)
什么是NLP?
NLP 是人工智能(AI)的一个子领域。自然语言处理一直被称为人工智能领域的珠穆朗玛峰,是最为困难的问题之一,它是能够让人类与智能机器进行沟通交流的重要技术手段。因此,自然语言处理的研究也是充满魅力和挑战的。
NLP 作为一种人工智能方法,能够处理机器和人类自然语言之间的交互,即 NLP 帮助计算机机器以各种形式使用自然人类语言进行交流,包括进行分析、理解、改变或生成自然语言。主要涉及的范畴如下(来自维基百科):
• 中文自动分词
• 词性标注
• 句法分析
• 文本分类
• 信息抽取
• 知识图谱
• 问答系统和自动聊天机器人
• 机器翻译
• 自动摘要
初见NLP
在接触NLP(NaturalLanguage Processing) 伊始,非常建议大家去详读吴军教授的一部书—《数学之美》,这也是当时论文题目敲定时,导师赠与我看的,我大概花了两周的时间把它系统地读了一遍。
如果您是第一次接触自然语言处理,肯定会很好奇,为什么数学和自然语言处理能扯上关系?
因为很多自然语言处理的问题可以抽象成非常简单的通信模型和统计学模型,一个简单的条件概率公式加上一个马尔科夫假设就可以做到机器翻译和语音识别。神奇吧?
笔者对数学的态度有过很大转变。从小学、初中参加各级数学竞赛获奖,到高中、大学对其提不起任何兴趣,因为我一度认为数学是一个无用、无趣、无情的学科。直到读完这本书,才发现曾经学的数学知识,比如马尔可夫链、矩阵计算,甚至余弦函数原来都如此亲切。其实很多看起来很智能的技术,并不是靠计算机的思考实现的,而都是统计学的应用。例如语音识别、图像识别、OCR、智能联想、词性标注等。因为读研时想继续钻研人工智能,我开始重新啃概率论、线性代数、离散数学了,如果我刚上大学就读了这本书,我相信我数学会学的更好的。(哭)
要做一个什么样的系统?
本文聚焦小微公众号的运营者面临的问题和挑战,通过对大量文本的分析和建模,构建评分与优化系统。该系统能为小微公众号运营者欲发表文章进行自动评分,并对其进行分类。在语料集中搜索同一分类下内容最为接近的文章进行推荐。系统还可以自动对文章进行质量分级,提取不同层级的文章的关键词、标题、发文频率等信息供发文者参考改进。公众号运营者可以借助该系统优化文章内容和发文策略,在同等环境下提高文章的曝光率,最终实现对小微公众号内容运营效果的提升。
系统是用Python开发的,主要涉及到sklearn、jieba、pandas、pymysql等库 ,数据库使用的是Mysql,HTTP调试抓包工具使用的是Fiddler4。
最终设计的构建流程和运行流程如下所示。
系统构建流程 系统运行流程记录并分享这些内容,为的是希望将来可以保持好习惯,对每一个项目进行review、复盘。这几天先初步整理了项目的代码和数据。之后笔者会一步一步介绍系统的构建流程,并展开其中涉及到的代码、思想、相关算法。希望可以和大家一起学习进步,也希望大家能不吝赐教,感激不尽!
本项目涉及到的代码量较大,已上传至github开源,有兴趣的朋友们可以下载,与我交流。code还没有经过系统的优化,虽然可以运行,但还比较粗糙,如果有可以改进的地方,希望大家能指出,这将对我有莫大的帮助。
如果您喜欢我的文章,动动小手点个赞吧~谢谢啦! ̄ω ̄
项目地址:https://github.com/yt837921455/myNLPproject.git
我的微信:qwq66666666qwq
我的Github:@yt837921455