专栏名称: 王树义
终身学习者、大学教师。稍微懂一点儿写作、演讲、Python和机器学习。欢迎微信关注并置顶我的公众号“玉树芝兰”(nkwangshuyi)。我已委托“维权骑士”(rightknights.com)为我的文章进行维权行动。
目录
相关文章推荐
Python爱好者社区  ·  月薪3万35岁脑干出血程序员:ICU躺了28 ... ·  4 小时前  
Python爱好者社区  ·  软考,yyds ·  4 小时前  
Python爱好者社区  ·  公司Rust团队全员被裁,只因把服务写得「太 ... ·  2 天前  
Python爱好者社区  ·  华为目标院校白名单(2025最新版) ·  5 天前  
Python爱好者社区  ·  《MCP原理与实践》—— ... ·  5 天前  
51好读  ›  专栏  ›  王树义

如何用Python和机器学习训练中文文本情感分类模型?

王树义  · 简书  · Python  · 2018-03-12 22:14

正文

请到「今天看啥」查看全文


这个例子里面,特征的数量叫做维度。于是向量化之后的这两句话,都有5个维度。

你一定要记住,此时机器依然不能理解两句话的具体含义。但是它已经尽量在用一种有意义的方式来表达它们。

注意这里我们使用的,叫做“一袋子词”(bag of words)模型。

下面这张图(来自 https://goo.gl/2jJ9Kp ),形象化表示出这个模型的含义。

image

一袋子词模型不考虑词语的出现顺序,也不考虑词语和前后词语之间的连接。每个词都被当作一个独立的特征来看待。

你可能会问:“这样不是很不精确吗?充分考虑顺序和上下文联系,不是更好吗?”

没错,你对文本的顺序、结构考虑得越周全,模型可以获得的信息就越多。

但是,凡事都有成本。只需要用基础的排列组合知识,你就能计算出独立考虑单词,和考虑连续n个词语(称作 n-gram),造成的模型维度差异了。

为了简单起见,咱们这里还是先用一袋子词吧。有空我再给你讲讲……

打住,不能再挖坑了。

中文

上一节咱们介绍的,是自然语言向量化处理的通则。

处理中文的时候,要更加麻烦一些。

因为不同于英文、法文等拉丁语系文字,中文天然 没有 空格作为词语之间的分割符号。

我们要先将中文分割成空格连接的词语。

例如把:

“我喜欢这个游戏”

变成:

“我 喜欢 这个 游戏”

这样一来,就可以仿照英文句子的向量化,来做中文的向量化了。

你可能担心计算机处理起中文的词语,跟处理英文词语有所不同。

这种担心没必要。

因为咱们前面讲过,计算机其实连英文单词也看不懂。

在它眼里,不论什么自然语言的词汇,都只是某种特定组合的字符串而已。
不论处理中文还是英文,都需要处理的一种词汇,叫做停用词。

中文维基百科里,是这么定义停用词的:

在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词)。

咱们做的,不是信息检索,而已文本分类。

对咱们来说,你不打算拿它做特征的单词,就可以当作停用词。

还是举刚才英文的例子,下面两句话:

I love the game.

I hate the game.

告诉我,哪些是停用词?

直觉会告诉你,定冠词 the 应该是。

没错,它是虚词,没有什么特殊意义。

它在哪儿出现,都是一个意思。

一段文字里,出现很多次定冠词都很正常。把它和那些包含信息更丰富的词汇(例如love, hate)放在一起统计,就容易干扰我们把握文本的特征。

所以,咱们把它当作停用词,从特征里面剔除出去。

举一反三,你会发现分词后的中文语句:

“我 喜欢 这个 游戏”

其中的“这个”应该也是停用词吧?

答对了!

要处理停用词,怎么办呢?当然你可以一个个手工来寻找,但是那显然效率太低。

有的机构或者团队处理过许多停用词。他们会发现,某种语言里,停用词是有规律的。

他们把常见的停用词总结出来,汇集成表格。以后只需要查表格,做处理,就可以利用先前的经验和知识,提升效率,节约时间。

在scikit-learn中,英语停用词是自带的。只需要指定语言为英文,机器会帮助你自动处理它们。

但是中文……

scikit-learn开发团队里,大概缺少足够多的中文使用者吧。

好消息是,你可以使用第三方共享的停用词表。

这种停用词表到哪里下载呢?

我已经帮你找到了 一个 github 项目 ,里面包含了4种停用词表,来自哈工大、四川大学和百度等自然语言处理方面的权威单位。

image

这几个停用词表文件长度不同,内容也差异很大。为了演示的方便与一致性,咱们统一先用哈工大这个停用词表吧。

image

我已经将其一并存储到了演示目录压缩包中,供你下载。
# 环境

请你先到 这个网址 下载本教程配套的压缩包。

下载后解压,你会在生成的目录里面看到以下4个文件。

image

下文中,我们会把这个目录称为“演示目录”。

请一定注意记好它的位置哦。

要装Python,最简便办法是安装Anaconda套装。

请到 这个网址 下载Anaconda的最新版本。

image

请选择左侧的 Python 3.6 版本下载安装。

如果你需要具体的步骤指导,或者想知道Windows平台如何安装并运行Anaconda命令,请参考我为你准备的 视频教程

打开终端,用cd命令进入 演示目录 。如果你不了解具体使用方法,也可以参考 视频教程
我们需要使用许多软件包。如果每一个都手动安装,会非常麻烦。

我帮你做了个虚拟环境的配置文件,叫做environment.yaml ,也放在演示目录中。

请你首先执行以下命令:

conda env create -f environment.yaml

这样,所需的软件包就一次性安装完毕了。

之后执行,

source activate datapy3

进入这个虚拟环境。

注意一定要执行下面这句:

python -m ipykernel install --user --name=datapy3

只有这样,当前的Python环境才会作为核心(kernel)在系统中注册。







请到「今天看啥」查看全文