在Windows下安装fasttext,并对中文文本进行Text classification

本文记录了在Windows7 + Anaconda + Python 3.6环境下,使用jieba进行中文分词,通过词云展示结果,以及安装和使用Facebook的fastText进行文本分类的过程。在fastText安装过程中遇到了Microsoft Visual C++ 14.0的依赖问题,通过下载Visual Studio 2017解决。最终,训练数据集的格式问题导致分类结果出错,参照官方文档和示例修复了问题。
部署运行你感兴趣的模型镜像

工作中遇到nlp相关的问题,从接手到今天有了一点眉目差不多三周时间。由于之前只是在理论上知道有nlp这一回事,这次的实践遇到很多坑,过程磕磕碰碰经历得很痛苦,在此记录下,以便有与我相似需求的同学有一点参考资料。

     首先我的工作环境是Windows7 64+Anaconda+Python 3.6,明确自己的工作环境很重要,因为在网上查找资料时很多解决方案都不适用于我这个环境,如果用的是linux/os的系统应该会轻松很多。

1、中文分词--结巴

在Anacona Prompt(Anacona的cmd)中执行

conda install jieba

正常情况下会自动下载jieba及其依赖的包,这里需要注意的是在使用Anaconda时优先考虑使用conda  install 命令,而不是pip install(虽然我用pip安装好像也没什么问题)

关于结巴分词的详情参考官网:

https://github.com/fxsjy/jieba

2、直观展示--词云

初步展示分词的结果,词云是最直观的方式,这里我参考了

https://blog.youkuaiyun.com/FontThrone/article/details/72782971

3、fastText安装--坑、坑、坑

fastText安装过程真可谓摔得我鼻青脸肿,曾因为不同版本的fastText而遇到各种问题,在csdn、github、stack overflow、zhihu上迷失了自我,这里我对各个版本作一个汇总。

先说两个我没走通的:

    1、https://pypi.org/project/fasttext/

pypi官网上的这个fasttext,安装方法是 

pip install fasttext
分类方法的调用方式:

classifier = fasttext.supervised('data.train.txt', 'model', label_prefix='__label__')
其中data.train.txt 为训练数据集,model是它的输出,包括model.bin和model.vec,label_prefix默认的类别前缀\\

测试及结果查看的方法:

result = classifier.test('test.txt')
print 'P@1:', result.precision
print 'R@1:', result.recall
print 'Number of examples:', result.nexamples
最后一行输出分类出错的例子。

   2、第二个没走通的是博客园

https://www.cnblogs.com/gaofighting/p/9552821.html

里文末最后提到的gensim.models.fasttext 版本

安装的命令:

pip install --upgrade gensim
以上两个我走不通好像是因为安装时报Microsoft Visual C++ 14.0 is required,还是在调用fasttext.supervised时一直报 supervised方法不存在我忘记了,总之找了很多方法都没成功后来就放弃了,如果报Microsoft Visual C++ 14.0 is required的error,务必确保自己的电脑确实安装了Visual Studio 2017及以上版本,这里可以在官网上下载社区免费版

https://visualstudio.microsoft.com/zh-hans/downloads/

具体的安装可以参考

https://github.com/benfred/implicit/issues/76

链接中temannin的回答

Here's what I did:

Downloaded Microsoft Visual C++ Build Tools from this link:https://visualstudio.microsoft.com/downloads/

Run the installer

Select: Workloads → Visual C++ build tools.

Install options: select only the “Windows 10 SDK” (assuming the computer is Windows 10)

最后一步因人而异,我的是win7,Windows 10 SDK这个选项是默认勾选的,后面证明也没问题

我成功安装的是

https://github.com/facebookresearch/fastText

facebook的github官网上的这个

不论是conda install 还是 pip install 都受阻,最后采用离线安装,安装包是在

https://www.lfd.uci.edu/~gohlke/pythonlibs/

找到相应的版本,文件以.whl结尾

另外,anaconda官网上也有提供第三方包

https://anaconda.org/conda-forge/jieba/files

安装时打开Anacona Prompt,cd到.whl文件所在位置

pip install 文件名.whl

即可

安装成功之后用

import fastText.FastText as ff

的方式导入包,调用方法如下:

classifier = ff.train_supervised("data/try_fasttext_train.txt",label='__label__')

其中try_fasttext_train.txt是训练数据集,类别前缀依然是__label__.

这里try_fasttext_train.txt里面的数据存放格式没有明确指出,导致最后我在调用classifier.test方法时结果都是(0,nan,nan),这其中我受到一个解决方案的影响很大,链接我忘记了,他说的是fasttext在windows上就是出不来结果的,推荐使用上述我走不通的两个版本中的一个解决了,这里我被误导的很严重。其实出现(0,nan,nan)很大可能是你的训练集没有符合ff.train_supervise的要求,费尽力气终于在官网的

https://github.com/facebookresearch/fastText/blob/master/classification-example.sh

里的

https://github.com/le-scientifique/torchDatasets/raw/master/dbpedia_csv.tar.gz

找到了例子,格式为

__label__1 你好 再见

__label__0 我 爱 北京 天安门

这里我又犯了一个错误,把__label__错写成__lable__,导致又又又一次出现(0,nan,nan)的结果

参考的是这里

https://github.com/facebookresearch/fastText/issues/192

所以官网的东西很重要,要仔细看,上面都会有数据的,同时遇到的问题大部分都已经有人遇到过了,所以Issues板块也很重要

之后如果有时间我会尝试走不通的那两种方法,个人猜测gensim里的fasttext和facebook的fasttext应该是一样的,上次报错主要是因为没安装Visual Studio 2019

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值