文本判别技术总结

20180606毕设更新:在2号终于有惊无险地完成了毕业答辩之后,终于有空,总结一下毕设内容,并且补上一些修改及最终代码。再加上一些吐槽的内容~

1、系统补充及修改

在这里详细地介绍一下整个系统的流程吧。

1.1 文本处理部分

1.1.1 文本标注

(1)挑选关键词

在此给定三个民主子话题——“民主制度”、“民主自由”和“民主监督”

(2)评分
给出相关度评分,1~5分,其中1为基本无关,5为非常相关。

基本无关 有点相关 基本相关 比较相关 非常相关
1 2 3 4 5

(3)标注
在这里我主要标注了505条,标注格式为:

文本 民主制度 民主自由 民主监督
'首先这两个目标是我们追求的理念,并不意味着马上能实现或一定能完全达到;其次人人平等和共同富裕都是相对的,表明每个人都有自己的尊严、生存发展和被他人尊重的权利,共同富裕则强调社会贫富差距相对很小,社会整体处于富足的状态。最后人人平等是普遍认可的普世价值,共同富裕是社会稳定的重要基础,理应成为每个政府施政追求的目标。 1 3 1

1.1.2 提取关键词

在这里,利用exckeyWords.py进行关键词抽取。

1.抽取存储2.对抽取的关键词进行词频统计3.对抽取结果进行处理前面写的这三篇博客对代码有比较细致的讲解。

该文件需要输入"biao2.xls",该表格存储了民主相关文本的标注信息,中间产生t1.xls中间表格(为了去掉空格和空值)。

关键词抽取后得到若干关键词,并保存在sta.xls中。如图:

1.1.3 生成文本特征向量

(1)自动标注

我又从语料库中挑选出1000+条文本,删掉一些与民主特别相关的文本之后,所有文本直接标注1,1,1即与所有民主子话题无关。具体参考
非民主相关帖子处理代码未改动。

将与民主相关的标注文本与上述自动生成的标注文本合并在一起,便得到了1000+条的标注文本。

(2)获取误差测试集,机器学习数据集

挑选300条用来测试误差,其余的当作机器学习的输入数据集。由于一共有1090条文本,所以随机生成0~1089之间的数字,生成300个,但有可能多出来,所以需要将多的删掉,如果是少的话,就不处理。由于每次结果不太一样,所以尽量选择多选的情况。


Lr=[]
for i in range(350):
    Lr.append(random.randint(0, 1090))
Lr=list(set(Lr))
Lr.sort()
Lrlen=len(Lr)
delta=abs(300-Lrlen)
#delta为误差测试集数量超过300时的差值
for i in range(delta):
    j=-i
    Lr.pop(j)
print(len(Lr))
Ll=list(range(0,1090))
#Ll中有的并且不在Lr中的数字放入di中,即需要机器学习的数据集
di=[v for v in Ll if v not in Lr]

print(len(di))

(3)向量生成

向量生成的详细过程参考
向量生成,代码是"MLdata.py".其中输入文件sta.xls为关键词集合;输入文件FMbeifen.xls是标注文本;输出文件t2.xls是将向量以Excel表格存储;输出文件test.txt是存放全部向量的txt文本;输出文件test2.txt和test3.txt分别是存放误差测试集和数据集的向量.

1.2 机器学习部分

之前的三篇写得很清楚了
1、机器学习分类实例(sklearn)——SVM,
2、机器学习分类实例(sklearn)——SVM(修改)/Decision Tree/Naive Bayes
3、机器学习分类实例——数据测试

主要代码为:

svm.py; nby.py; dt.py

svmPre.py; nbyPre.py; dtPre.py

另外为了方便演示,我整合了一些代码为Bless.py,是希望答辩演示的时候能不崩溃。主要功能便是输入一段文本,自动地解析为特征向量,并根据对应算法,进行预测分类。

2、答辩相关

3、吐槽

4、论文

5、代码

猜你喜欢

转载自www.cnblogs.com/cafe3165/p/9146966.html