网站首页 > 技术文章 正文
使用Facebook的FastText简化文本分类
使用FastText API分析亚马逊产品评论情绪的分步教程
本博客提供了详细的分步教程,以便使用FastText进行文本分类。为此,我们选择在Amazon.com上对客户评论进行情绪分析,并详细说明如何抓取特定产品的评论以便对他们进行情绪分析。
什么是FastText?
文本分类已成为商业世界的重要组成部分; 是否用于垃圾邮件过滤或分析电子商务网站的推特客户评论的情绪,这可能是最普遍的例子。
FastText是由Facebook AI Research(FAIR)开发的开源库,专门用于简化文本分类。FastText能够在几十分钟内通过多核CPU在数百万个示例文本数据上进行训练,并使用训练模型在不到五分钟的时间内对超过300,000个类别中的未出现的文本进行预测。
预先标注的训练数据集:
收集了从Kaggle.com获得的包含数百万条亚马逊评论的手动注释数据集,并在转换为FastText格式后用于训练模型。
FastText的数据格式如下:
__label__<X> __label__<Y> ... <Text> 复制代码
其中X和Y代表类标签。
在我们使用的数据集中,我们将评论标题添加到评论之前,用“:”和空格分隔。
下面给出了训练数据文件中的示例,可以在Kaggle.com网站上找到用于训练和测试模型的数据集。
__label__2 Great CD: My lovely Pat has one of the GREAT voices of her generation. I have listened to this CD for YEARS and I still LOVE IT. When I'm in a good mood it makes me feel better. A bad mood just evaporates like sugar in the rain. This CD just oozes LIFE. Vocals are jusat STUUNNING and lyrics just kill. One of life's hidden gems. This is a desert isle CD in my book. Why she never made it big is just beyond me. Everytime I play this, no matter black, white, young, old, male, female EVERYBODY says one thing "Who was that singing ?" 复制代码
在这里,我们只有两个类1和2,其中__label__1表示评论者为产品打1或2星,而__label__2表示4或5星评级。
训练FastText进行文本分类:
预处理和清洗数据:
在规范化文本案例并删除不需要的字符后,执行以下命令以生成预处理和清洗的训练数据文件。
cat <path to training file> | sed -e “s/\([.\!?,’/()]\)/ \1 /g” | tr “[:upper:]” “[:lower:]” > <path to pre-processed output file> 复制代码
设置FastText:
让我们从下载最新版本开始:
$ git clone https://github.com/facebookresearch/fastText.git $ cd fastText $ make 复制代码
不带任何参数运行二进制文件将打印高级文档,显示fastText支持的不同用例:
>> ./fasttext usage: fasttext <command> <args> The commands supported by fasttext are: supervised train a supervised classifier quantize quantize a model to reduce the memory usage test evaluate a supervised classifier predict predict most likely labels predict-prob predict most likely labels with probabilities skipgram train a skipgram model cbow train a cbow model print-word-vectors print word vectors given a trained model print-sentence-vectors print sentence vectors given a trained model nn query for nearest neighbors analogies query for analogies 复制代码
在本教程中,我们主要使用了supervised,test和predict子命令,对应于学习(和使用)的文本分类。
训练模型:
以下命令用于训练文本分类模型:
./fasttext supervised -input <path to pre-processed training file> -output <path to save model> -label __label__ 复制代码
该-input命令行选项指的是训练文件,而-output选项指的是该模型要保存的位置。训练完成后,将在给定位置创建包含训练分类器的文件model.bin。
用于改进模型的可选参数:
增加训练迭代次数:
默认情况下,模型在每个示例上迭代5次,为了更好的训练增加此参数,我们可以指定-epoch参数。
示例:
./fasttext supervised -input <path to pre-processed training file> -output <path to save model> -label __label__ -epoch 50 复制代码
指定学习率:
改变学习率意味着改变我们模型的学习速度,是增加(或降低)算法的学习率。这对应于处理每个示例后模型更改的程度。学习率为0意味着模型根本不会改变,因此不会学到任何东西。良好的学习率值在该范围内0.1 - 1.0。
lr的默认值为0.1。这里是如何指定此参数。
./fasttext supervised -input <path to pre-processed training file> -output <path to save model> -label __label__ -lr 0.5 复制代码
使用n-gram作为特征:
对于依赖于词序,特别是情感分析的问题,这是一个有用的步骤。它是指定连续token在n的窗口内的词都作为特征来训练。
我们指定-wordNgrams参数(理想情况下,值介于2到5之间):
./fasttext supervised -input <path to pre-processed training file> -output <path to save model> -label __label__ -wordNgrams 3 复制代码
测试和评估模型:
以下命令用于在预先注释的测试数据集上测试模型,并将原始标签与每个评论的预测标签进行比较,并以准确率和召回率的形式生成评估分数。
精度是fastText预测的标签中正确标签的数量。召回是成功预测的标签数量。
./fasttext test <path to model> <path to test file> k 复制代码
其中参数k表示模型用于预测每个评论的前k个标签。
在400000评论的测试数据上评估我们训练的模型所获得的结果如下。如所观察到的,精确度,召回率为91%,并且模型在很短的时间内得到训练。
N 400000 P@1 0.913 R@1 0.913 Number of examples: 400000 复制代码
分析在Amazon.com上产品的实时客户评价的情绪:
抓取亚马逊客户评论:
我们使用现有的python库来从页面中抓取评论。
要安装,请在命令提示符/终端中键入:
pip install amazon-review-scraper 复制代码
以下是给定网址网页的示例代码,用于抓取特定产品的评论:
from amazon_review_scraper import amazon_review_scraper url = input("Enter URL: ") start_page = input("Enter Start Page: ") end_page = input("Enter End Page: ") time_upper_limit = input("Enter upper limit of time range (Example: Entering the value 5 would mean the program will wait anywhere from 0 to 5 seconds before scraping a page. If you don't want the program to wait, enter 0): ") file_name = "amazon_product_review" scraper = amazon_review_scraper.amazon_review_scraper(url, start_page, end_page, time_upper_limit) scraper.scrape() scraper.write_csv(file_name) 复制代码
注意:在输入特定产品的客户审核页面的URL时,请确保附加&pageNumber = 1(如果它不存在),以使scraper正常运行。
上面的代码从给定的URL中抓取了评论,并按以下格式创建了输出csv文件:
从上面的csv文件中,我们提取标题和正文并将它们一起追加到一起,用训练文件中的':和空格分隔,并将它们存储在一个单独的txt文件中以预测情绪。
数据的情绪预测:
./fasttext predict <path to model> <path to test file> k > <path to prediction file> 复制代码
其中k表示模型将预测每个评论的前k个标签。
上述评论预测的标签如下:
__label__2 __label__1 __label__2 __label__2 __label__2 __label__2 __label__2 __label__2 __label__1 __label__2 __label__2 复制代码
这是相当准确的,可手动验证。预测文件随后可用于进一步的详细分析和可视化目的。
因此,在本博客中,我们学习了使用FastText API进行文本分类,抓取给定产品的亚马逊客户评论,并使用经过培训的分析模型预测他们的情绪。
点击英文原文链接
更多文章欢迎访问: http://www.apexyun.com参考文献:K码农-http://kmanong.top/kmn/qxw/form/home?top_cate=28
猜你喜欢
- 2024-11-04 15亿参数的GPT-2被两个CS硕士复制,没有语言建模经验花了5万美元
- 2024-11-04 Facebook正研发AI翻译技术 facebook generation的翻译
- 2024-11-04 (完结篇)简析一个比Flask和Tornado更高性能的API 框架FastAPI
- 2024-11-04 谷歌云TensorFlow性价比测试:GPU不是赢家,CPU多也不是赢家
- 2024-11-04 云CPU上的TensorFlow基准测试:优于云GPU的深度学习
- 2024-11-04 谷歌云TensorFlow性价比测试:CPU比GPU表现更好
- 2024-11-04 FastText模型训练指南:为产品经理量身定制
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)