<h2 align = "center">文本数据的分类与分析</h2>
## 一、实验目的
1. 掌握数据预处理的方法,对训练集数据进行预处理;
2. 掌握文本建模的方法,对语料库的文档进行建模;
3. 掌握分类算法的原理,基于有监督的机器学习方法,训练文本分类器;
4. 利用学习的文本分类器,对未知文本进行分类判别;
5. 掌握评价分类器性能的评估方法。
## 二、实验类型
  人工智能认知验证实验。
## 三、实验要求
1. 个人独立实现实验;
2. 文本类别数:≥10 类;
3. 训练集文档数:≥ 50000 篇;每类平均 5000 篇;
4. 测试集文档数:≥ 50000 篇;每类平均 5000 篇;
5. 使用合适的降维方法;
6. 判断停用词表是否合理并作出适当调整;
7. 改进加权方法和其他改进方法;
8. 朴素贝叶斯分类器要手动编写完成。
## 四、实验内容
利用分类算法实现对文本的数据挖掘,主要包括:
1. 语料库的构建,主要从搜狗语料库、复旦大学中文语料库等搜集文章作为训练集和测试集;
2. 语料库的数据预处理,包括文档建模,如去噪,分词,建立数据字典,使用词袋模型(TF-IDF)或主题模型(LDA)表达文档等;
3. 选择分类算法(朴素贝叶斯 NaiveBayes、支持向量机 SVM),训练文本分类器,理解所选的分类算法的建模原理、实现过程和相关参数的含义;
4. 对测试集的文本进行分类;
5. 对测试集的分类结果利用正确率和召回率进行分析评价:计算每类正确率、召回率,计算总体正确率和召回率。
## 五、实验步骤
#### 1、语料库的构建
  ① 选择复旦大学中文语料库,下载 Art、Literature、Education、Philosophy、History、Space、Energy、Electronics、Communication、Computer、Mine、Transport、Environment、Agriculture、Economy、Law、Medical、Military、Politics、Sports 共 20 类文章。
  ② 选择其中文章数量最多的 10 类作为总语料库,将每类文章平均分为两部分,一部分作为训练集,另一部分作为测试集,平均每类文章测试集和训练集均为 1000 篇,比例 1:1。
  ③ 平时测试使用 20 类中文章数量较少的 10 类进行测试,避免过长的分词、建模、训练和测试时间,提高实验效率。
  ④ 复旦大学语料库下载网址:[https://download.csdn.net/download/weixin_44210339/10902090?utm_source=bbsseo](https://download.csdn.net/download/weixin_44210339/10902090?utm_source=bbsseo)
#### 2、语料库的分词处理
  分词采用结巴分词系统,首先对原始的文本进行分词处理,保留词语和词性,然后根据词性筛选出名词相关词,然后根据停等词表进行去停等词操作。
  根据实际应用发现,给定的停等词表不全,故后续添加〔、〕、(、)、【、】、-等符号,进一步完善停等词表。
```python
content = readFile(fullname)
# 删除换行、空行和多余空格
content = content.replace('\r\n'.encode('utf-8'), ''.encode('utf-8')).strip()
content = content.replace(' '.encode('utf-8'), ''.encode('utf-8')).strip()
# 调用jieba,进行分词
content_fenci = jieba.posseg.cut(content)
fenci_list = []
for x in content_fenci:
if 'n' in x.flag:
fenci_list.append(x.word)
newContent = []
for myword in fenci_list:
if (myword not in stop_words_dict):
newContent.append(myword)
```
#### 3、语料库的类型转换存储
  ① 分词后的文本格式不方便直接使用,而且读文件写文件花费时间极高,因此需要先将文本内容转为易存取易操作的格式,方便进行后续模式表达和文本分类操作。
  ② 选择 sklearn.utils 中的 Bunch 类,Bunch 本质上的数据类型是 dict,方便存取和其他操作。
  ③ 定义三个属性,分别表示分类(子目录),文件全路径,文件内容,把训练集和测试集的文本文件分别存储到一个 bunch 中,然后将 bunch 存储到.dat 文件中。
```python
bunch = Bunch(label = [], filenames = [], contents = [])
```
![](https://www.writebug.com/myres/static/uploads/2021/11/18/44b7d7ff4810f73f3aae96411c60c984.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/11/18/3ad883a7943ea3eb128ce96e7b3bfc51.writebug)
```python
import os
import time
import pickle
from sklearn.utils import Bunch
from Tools import readFile, writeBunchObj
def SetsToBunchProcess(initial_path, target_path):
print("开始构建文本对象...")
# 获取分词处理后的集合的所有子目录
dir_list = os.listdir(initial_path)
# 创建一个存储信息的Bunch类
# 分类(子目录),文件全路径,文件内容
bunch = Bunch(label = [], filenames = [], contents = [])
for mydir in dir_list:
ini_path = initial_path + mydir + "/" #子目录的子目录
file_list = os.listdir(ini_path) # ini_path下所有文件,也就是训练集和测试集
for myfile in file_list:
fullname = ini_path + myfile
bunch.label.append(mydir) # 类别
bunch.filenames.append(fullname) # 全路径
bunch.contents.append(readFile(fullname)) # 文件内容
writeBunchObj(target_path, bunch)
print("构建文本对象结束!")
if __name__ == "__main__":
time1 = time.process_time()
# 对训练集进行Bunch化操作,生成.dat数据文件
print("对训练集Bunch化,构造文本对象...")
training_sets_path = "./ProcessedTrainingSets/"
target_bunch_path = "./BunchOfTrainingSets/BunchOfTrainingSets.dat"
SetsToBunchProcess(training_sets_path, target_bunch_path)
time2 = time.process_time()
print('运行时间: %s s\n\n' % (time2 - time1))
# 对测试集进行Bunch化操作,生成.dat数据文件
print("对测试集Bunch化,构造文本对象...")
training_sets_path = "./ProcessedTestSets/"
target_bunch_path = "./BunchOfTestSets/BunchOfTestSets.dat"
SetsToBunchProcess(training_sets_path, target_bunch_path)
time3 = time.process_time()
print('运行时间: %s s' % (time3 - time2))
```
#### 4、语料库的模型表达
##### 1)、词袋模型(TF-IDF)
  TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率)是一种用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术。
  TF-IDF 是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
  TF-IDF 的主要思想是:如果某个单词在一篇文章中出现的频率 TF 高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
  ① TF 是词频(Term Frequency), 词频(TF)表示词条(关键字)在文本中出现的频率。 这个数字通常会被归一化(一般是词频除以文章总词数), 以防止它偏向长的文件。
$$
tf_{i,j}=\frac{n_{i,j}}{\sum_{k}{n_{k,j}}}
$$
  即
$$
TF_{w} = \frac{在某一类中词条w出现的次数}{该类中所有词条的数目}
$$
  ② IDF 是逆向文件频率(Inverse Document Frequency),逆向文件频率 (IDF) :某一特定词语的 IDF,可以由总文件数目除以包含该词语的文件的数目,再将得到的商取对数得到。如果包含词条 t 的文档越少, IDF 越大,则说明词条具有很好的类别区分能力。
$$
idf_i=\log\frac{|D|}{|\{j:t_i\in d_j\}|}
$$
  其中,|D| 是语料库中的文件总数。 |\{j:t_i\in d_j\}| 表示包含词语 t_i 的文件数目(即 n_i,j≠0 的文�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
人工智能大作业,文本分类,TF-IDF+手写朴素贝叶斯。本项目利用分类算法实现对文本的数据挖掘,主要包括:1. 语料库的构建,主要从搜狗语料库、复旦大学中文语料库等搜集文章作为训练集和测试集;2. 语料库的数据预处理;3. 选择分类算法(朴素贝叶斯、支持向量机),训练文本分类器,理解所选的分类算法的建模原理、实现过程和相关参数的含义;4. 对测试集的文本进行分类;5. 对测试集的分类结果利用正确率和召回率进行分析评价。 个人独立实现实验; 文本类别数:≥10 类; 训练集文档数:≥ 50000 篇;每类平均 5000 篇; 测试集文档数:≥ 50000 篇;每类平均 5000 篇; 使用合适的降维方法; 判断停用词表是否合理并作出适当调整; 改进加权方法和其他改进方法; 朴素贝叶斯分类器要手动编写完成。
资源推荐
资源详情
资源评论
收起资源包目录
,文本分类,TF-IDF+手写朴素贝叶斯.zip (63个子文件)
text-classify-idf-naivebayes
人工
人工智能实验 - TF-IDF+NB和SVM
WriteNaiveBayesPredict.py 7KB
SupportVectorMachinePredict2.py 2KB
TF-IDFSpaceProcess.py 2KB
Pretreatment.py 3KB
settings.json 183B
stop_words.txt 6KB
__pycache__
Tools.cpython-37.pyc 860B
NaiveBayesPredict2.py 2KB
SetsToBunchProcess.py 2KB
launch.json 381B
Tools.py 524B
pic
10.png 120KB
9.png 121KB
3.png 5KB
1.png 91KB
6.png 4KB
5.png 4KB
4.png 5KB
8.png 188KB
7.png 5KB
2.png 5KB
实验报告.md 3KB
文本实验指导书及参考报告.rar 1.79MB
人工智能实验- 文本分类实验要求.docx 17KB
人工智能实验初始
settings.json 183B
stop_words.txt 4KB
launch.json 381B
chinese_text_classification-master
corpus_segment.py 3KB
hlt_stop_words.txt 5KB
TFIDF_space.py 2KB
corpus2Bunch.py 2KB
settings.json 183B
__pycache__
Tools.cpython-37.pyc 1KB
NBayes_Predict.py 2KB
README.md 1KB
launch.json 381B
Tools.py 788B
参考实验报告二.pdf 1MB
人工智能实验报告模版.docx 8KB
stop_words.txt 4KB
人工智能实验 - LDA+ NB和SVM
LDASpaceProcess.py 2KB
NaiveBayesPredict.py 2KB
SupportVectorMachinePredict.py 2KB
Pretreatment.py 3KB
settings.json 183B
stop_words.txt 6KB
__pycache__
Tools.cpython-37.pyc 860B
Tools.cpython-310.pyc 1004B
SetsToBunchProcess.py 2KB
launch.json 381B
Tools.py 524B
文本分类入门.pdf 1003KB
68组-2018211514-许子康-人工智能实验报告.pdf 1024KB
参考实验报告一.doc 252KB
README.md 35KB
LICENSE 1KB
人工智能实验- 文本分类实验要求.docx 17KB
参考实验报告二.pdf 1MB
人工智能实验报告模版.docx 8KB
文本分类入门.pdf 1003KB
参考实验报告一.doc 252KB
README.md 35KB
stop_words_ch-停用词表.txt 4KB
共 63 条
- 1
甜辣uu
- 粉丝: 8105
- 资源: 1104
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页