## Comment of Interest (COI)
**创建人**:艾宏峰<br>
COI,是Comment of Interest的缩写,如果熟悉美剧《疑犯追踪》(英文名:Person of Interest, POI)的朋友应该会对我取得代号有熟悉的感知。如英文名所表明的那样,我起初是希望能构建并实现一个针对网络评论文本数据进行数据挖掘的项目(包括并不限于:爬虫、文本处理、情感分析和與情分析等等),但最后还是没太做的太深,只是实现了一个项目的雏形吧,姑且称它为COI Demo。它目前能实现的功能如下:
1. 电商评论爬虫(Web Crawler)
2. 句子级情感分析(Sentence-level Sentiment Classification)
3. 观点级情感分析(Aspect-level Sentiment Classification)
4. 观点抽取(Opinion Target Extraction)
详细项目解释请见:[练手项目:电商评论文本挖掘 - COI (Comment of interest)](https://mp.weixin.qq.com/s?__biz=MzUyNzA1OTcxNg==&mid=2247483885&idx=1&sn=ffd40a38193b9d846c5eca8ae8e8744d&chksm=fa041f86cd739690f3df40516b406835f8ff44ae51224edccec4f5238cd4d230de50d5e51985&token=370538825&lang=zh_CN#rd)<br>
欢迎关注我微信公众号: zaicode
### 环境配置
由于观点抽取、句子级情感分析和观点级情感分析需要基于huggingface等人开源维护的NLP代码库[Transformers](https://github.com/huggingface/transformers),所以需要配置相应的环境以便顺利运行代码。
构建虚拟环境并安装Transformers的详细教程,请参考[Transformers Installation](https://github.com/huggingface/transformers)
```
# 创建虚拟环境
conda create -n transformer_env python=3.7
conda activate transformer_env
# 由于我CUDA为10.0,CUDNN为7.5.1,因此我下载的是pytorch 1.2.0
#(注意Transformers只支持Python 3.6+, PyTorch 1.0.0+,TensorFlow 2.0)
# pytorch下载命令查询地址:https://pytorch.org/get-started/previous-versions/
conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0 -c pytorch
# 安装Transformers
pip install transformers
# 安装其他库(自行按需安装即可)
pip install boto3 pandas tqdm scikit-learn requests urllib3 pillow sacremoses sentencepiece
```
### 一、电商评论爬虫
具体代码实现的解释请见博文:[使用Selenium爬取京东电商数据(以手机商品为例)](https://www.cnblogs.com/alvinai/p/13545727.html)
```
cd crawlers
# 依次爬取京东的列表页和详情页
python overview_JDcrawler.py
python detail_JDcrawler
```
### 二、句子级情感分析
本来应该是要我人工标注上述爬取的文本评论,但是后面发现了百度AI Studio开放了情感分析主体的[千言数据集](https://aistudio.baidu.com/aistudio/competition/detail/50),并以比赛的形式(即类似练习赛)鼓励参赛者用里面的数据集进行练习。开放的千言数据集涵盖了包括句子级情感分类(Sentence-level Sentiment Classification)、评价对象级情感分类(Aspect-level Sentiment Classification)、观点抽取(Opinion Target Extraction)三个经典任务。所以我就基于他们标注好的数据集进行模型训练。
#### 1. 数据预处理
下载千言数据集压缩包并放统一置在``./SA/``文件夹下。
```
# 批量将data/baidu_data/内放置的数据集压缩包进行批量解压
cd SA/data/baidu_data
ls *.zip | xargs -n1 unzip -o -P infected
# 开始数据预处理
cd ..
python data_preprocess_task1.py
```
#### 2. 模型训练、验证及预测
下载[中文RoBERTa预训练模型](https://github.com/ymcui/Chinese-BERT-wwm),并将下载好的RoBERTa-wwm-ext-large模型放在``SA/model/chinese_roberta_wwm_large_ext_pytorch``下,并将配置文件``bert_config.json``改名为``config.json``,然后可以执行下面的命令了。
```
cd SA/source
# 正式训练模型前,run_bert_2562_task1.py内的data_dir和output_dir的后缀要更改(对应第k折数据及结果)
# 这里可以用我的默认设置即可
python run_bert_2562_task1.sh
```
最后5折交叉训练后的结果在``SA/model/roberta_wwm_large_5121_42/``下。
### 三、观点级情感分析
代码过程与上面的句子级情感分析类似。
#### 1. 数据预处理
```
# 开始数据预处理
cd SA/data
python data_preprocess_task2.py
```
#### 2. 模型训练、验证及预测
```
cd SA/source
python run_bert_2562_task2.sh
```
#### 3. 结果后处理
这里统一处理句子级情感分析和观点级情感分析的结果,分别对它们各自的5折结果进行投票,最后后处理成符合提交格式的结果文件。
```
python source/post_process.py
```
### 四、观点抽取
观点抽取是用算法从指定文本中抽取处理文本的评价对象,例如:OPPO FIND X2是一部很好的旗舰级手机。那么观点抽取算法会得到:OPPO FIND X2。
#### 1. 数据预处理
观点抽取本质上就是命名实体识别NER任务,只不过不需要很复杂BIO去识别出实体的类型,如地点机构人物,只用简单的BIO就行了。所以要先对数据进行预处理成以BIO标注格式的数据。但首先也要先将之前我们下载好的RoBERTa-wwm-ext-large模型文件夹内的文件放在``NER/prev_trained_model/bert-base/``下,而且还要把之前解压出的COTE-BD、COTE-DP和COTE-MFW数据文件夹放置在``NER/datasets/AE/``下面,然后再进行数据预处理:
```
cd NER
cd python data_preprocess_single_word.py
```
最后``NER/datasets/AE/``下会出现以“_new2”为结尾的新数据集,都是预处理好的。
#### 2. 模型训练、验证及预测
此时,依次将不同数据集放入cner分别训练、验证及预测。因为COTE没有验证集,所以暂由train代替dev。因此在``run_ner_softmax.py``中第203行改为train。
```
# 将AE/datasets/COTE-BD_new2下的文件复制到AE/datasets/cner/下后,运行下列命令
# 注意output_dir要随着数据集而更改
python run_ner_softmax.py \
--model_type=bert \
--model_name_or_path=./prev_trained_model/bert-base \
--task_name="cner" \
--do_train \
--do_eval \
--do_predict \
--do_lower_case \
--loss_type=ce \
--data_dir=./datasets/cner/ \
--train_max_seq_length=128 \
--eval_max_seq_length=128 \
--per_gpu_train_batch_size=8 \
--per_gpu_eval_batch_size=8 \
--learning_rate=3e-5 \
--num_train_epochs=3.0 \
--logging_steps=448 \
--save_steps=448 \
--output_dir=./outputs/cner_cotebd_output/ \
--overwrite_output_dir \
--seed=42
```
训练且预测好后,``NER/outputs/``下会出现三个数据集的模型结果文件夹。
#### 3. 结果后处理
```
cd NER
python post_process.py
```
最后将后处理后的结果打包提交给[千言数据集:情感分析](https://aistudio.baidu.com/aistudio/competition/detail/50),就能得到以下的成绩:
|Score|NLPCC14-SC|ChnSentiCorp|COTE_BD|COTE_DP|SE-ABSA16_CAME|COTE_MFW|SE-ABSA16_PHNS|提交时间|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|Alvin0310的团队|0.8282|0.8384|0.9392|0.8729|0.893|0.7208|0.8901|0.6427|2020-10-17 21:14|
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
资源推荐
资源详情
资源评论
收起资源包目录
电商文本评论数据挖掘 (爬虫 + 观点抽取 + 句子级和观点级情感分析).zip (314个子文件)
train.char.bmes 12.96MB
train.char.bmes 11.63MB
test.char.bmes 5.25MB
test.char.bmes 4.82MB
train.char.bmes 2.65MB
test.char.bmes 1.1MB
roberta_wwm_large_512_1_last2embedding_cls_replacement_sub_8153.csv 252KB
roberta_wwm_large_3002_gru1_sub_8117.csv 252KB
roberta_wwm_large_512_1_last3embedding_cls_sub_81576.csv 252KB
roberta_wwm_large_5121_42_pse_sub_8123.csv 252KB
roberta_wwm_large_512_1_last2embedding_cls_rep_pse_sub_8221.csv 252KB
roberta_wwm_large_512_1_last2embedding_cls_24_sub_8133.csv 252KB
roberta_large_256_2_replacement_pse_sub_8091pse.csv 252KB
roberta_wwm_large_2562_24_sub_对比8126.csv 252KB
roberta_wwm_large_512_1_last2embedding_cls_sub_8157.csv 252KB
roberta_wwm_large_5121_last3embedding_sub_8150.csv 252KB
roberta_wwm_large_2562_gru1_42_sub_8126.csv 252KB
roberta_wwm_large_5121_42_sub.csv_8110.csv 252KB
roberta_wwm_large_512_1_last2embedding_cls_replacement_sub_8153.csv 252KB
roberta_wwm_large_512_1_last2embedding_cls_24_sub_对比8157.csv 252KB
roberta_wwm_large_3002_gru1_sub_8117.csv 252KB
roberta_wwm_large_5121_42_pse_sub_8123.csv 252KB
roberta_wwm_large_2562_24_sub_对比8126.csv 252KB
roberta_wwm_large_512_1_last2embedding_cls_sub_8157.csv 252KB
roberta_wwm_large_5121_last3embedding_sub_8150.csv 252KB
roberta_wwm_large_2562_gru1_42_sub_8126.csv 252KB
roberta_wwm_large_5121_42_sub.csv_8110.csv 252KB
sub_8223用于伪标签.csv 251KB
sub_vote9_1114_001_8223.csv 251KB
sub_vote12_1115_001_8233.csv 251KB
sub_复现8233.csv 251KB
submit_example.csv 251KB
._roberta_wwm_large_5121_42_pse_sub_8123.csv 4KB
._roberta_wwm_large_5121_42_sub.csv_8110.csv 4KB
._sub_vote12_1115_001_8233.csv 4KB
._roberta_wwm_large_5121_42_pse_sub_8123.csv 4KB
._roberta_wwm_large_5121_42_sub.csv_8110.csv 4KB
互联网新闻情感分析复现文档-我们都上哈工深.docx 456KB
【2019 CCF BDCI】-互联网新闻情感分析-我们都上哈工深-说明论文.docx 167KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
._.DS_Store 4KB
._.DS_Store 4KB
._.DS_Store 4KB
.gitignore 1KB
.gitignore 1KB
model006_roberta_wwm_large_5121_last3embedding-checkpoint.ipynb 317KB
model004_roberta_wwm_large_512_1_last2embedding_cls.ipynb 313KB
model004_roberta_wwm_large_512_1_last2embedding_cls-checkpoint.ipynb 313KB
model006_roberta_wwm_large_5121_last3embedding.ipynb 311KB
model011_roberta_wwm_large_512_1_last3embedding_cls-checkpoint.ipynb 309KB
model011_roberta_wwm_large_512_1_last3embedding_cls.ipynb 309KB
model010_roberta_wwm_large_512_1_last2embedding_cls_replacement.ipynb 297KB
model010_roberta_wwm_large_512_1_last2embedding_cls_replacement-checkpoint.ipynb 297KB
model012_roberta_wwm_large_512_1_last2embedding_cls_rep_pse.ipynb 297KB
model012_roberta_wwm_large_512_1_last2embedding_cls_rep_pse-checkpoint.ipynb 297KB
model007_roberta_wwm_large_5121_lstmgru-checkpoint.ipynb 275KB
model007_roberta_wwm_large_5121_lstmgru.ipynb 272KB
model001_roberta_wwm_large_5121_42-checkpoint.ipynb 216KB
model001_roberta_wwm_large_5121_42.ipynb 205KB
model005_roberta_wwm_large_5121_42_pse-checkpoint.ipynb 173KB
model005_roberta_wwm_large_5121_42_pse.ipynb 170KB
model003_roberta_wwm_large_3002_gru1_42.ipynb 143KB
model003_roberta_wwm_large_3002_gru1_42-checkpoint.ipynb 143KB
model001_roberta_wwm_large_512_gru1L_42-checkpoint.ipynb 29KB
004-数据预处理(替换英文字符).ipynb 24KB
004-数据预处理(替换英文字符)-checkpoint.ipynb 24KB
model002_roberta_wwm_large_2562_gru1_42.ipynb 18KB
model002_roberta_wwm_large_2562_gru1_42-checkpoint.ipynb 18KB
006-替换数据伪标签处理-checkpoint.ipynb 16KB
006-替换数据伪标签处理.ipynb 16KB
001_初赛复赛数据集合并-checkpoint.ipynb 13KB
001_初赛复赛数据集合并.ipynb 13KB
005-原始数据伪标签处理.ipynb 10KB
005-原始数据伪标签处理-checkpoint.ipynb 10KB
czx_001_投票融合.ipynb 9KB
czx_001_投票融合-checkpoint.ipynb 9KB
czx_001_投票融合4伪标签-checkpoint.ipynb 9KB
czx_001_投票融合4伪标签.ipynb 9KB
model009_roberta_wwm_large_2562_24.ipynb 6KB
model009_roberta_wwm_large_2562_24-checkpoint.ipynb 6KB
model008_roberta_wwm_large_512_1_last2embedding_cls_24.ipynb 5KB
model008_roberta_wwm_large_512_1_last2embedding_cls_24-checkpoint.ipynb 5KB
003_原始数据分层抽样划分5折-随机种子24.ipynb 4KB
002_原始数据分层抽样划分5折.ipynb 4KB
002_原始数据分层抽样划分5折-checkpoint.ipynb 4KB
LICENSE 1KB
README.md 7KB
README.md 3KB
readme.md 2KB
test_sentencepiece.model 247KB
License.pdf 190KB
License.pdf 190KB
image-20191224221848348.png 2.82MB
image-20191224221900868.png 2.31MB
image-20191224221809071.png 2.12MB
image-20191224221836114.png 2.12MB
image-20191224221704779.png 2.07MB
image-20191224221756483.png 1.98MB
共 314 条
- 1
- 2
- 3
- 4
资源评论
JJJ69
- 粉丝: 6353
- 资源: 5918
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功