自然语言分析——实验记录
Posted zz22--
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自然语言分析——实验记录相关的知识,希望对你有一定的参考价值。
1.第一次试验:朴素贝叶斯,采用统计词数量方式处理数据conutVectorizer()
(1)训练集12695条,
正向:8274
负向:4221
哈工大停词表:df=3,正确率0.899,
df=1,正确率0.9015
四川大学停词表:df=1,正确率0.90035
(2)训练集19106条
正向:11747
负向:7359
哈工大停词表:df=1,正确率0.90153
2.第二次实验:朴素贝叶斯,采用idf来处理评论数据TfidfVectorizer(),而TfidfTransformer()使用时出错。
(1)训练集19106条
正向:11747
负向:7359
哈工大停词表:df=1,正确率 0.899568
3.第三次实验:朴素贝叶斯,采用统计词数量方式处理数据conutVectorizer()
训练集19106条
正向:11747
负向:7359
哈工大停词表:df=1
(1)当数据向量化时,采用二元模型即conutVectorizer(ngram_range=(1,2))时出现MemeoryError错误,即内存不足。搜了原因是电脑的原因,再试试,用服务器运行。
仍然一元模型训练集不变,把测试集中分类错误的改过来,以及语句模糊的文本删除后,正确率提升一点。
正确率:0.9030612244897959
(2)当把分词换成精确模式而不是全模式时,精确度提高0.006
正确率:0.908948194662
4.第四次试验
(1)训练测试集不变,改动countVectorizer可以统计长度为 1的词后两次实验,统计词频数量的贝叶斯正确率为0.905,而用tfidf贝叶斯后,正确率降低到0.76左右,显著下降,可能是因为一个字的词太多,而总的训练数据又不够,导致idf的值就会比较小,而单个字的词频却很大,所以导致单个字的词tfidf值比较大,严重影响各个词的重要性分布,所以实验分类结果效果很差。
(2)训练测试集不变,朴素贝叶斯,采用统计词数量方式处理数据conutVectorizer(),正确率 0.9116954474097331
训练测试集不变,朴素贝叶斯,采用tfidf理数据,正确率为0.9030612244897959。
5.实验五
(1)采用逻辑斯蒂回归sklearn.linear_model.LogisticRegression()采用默认的正则化即penalty=‘l2‘,优化方法solver=‘liblinear‘时,正确率为0.9072691552062868
(2)采用逻辑斯蒂回归sklearn.linear_model.LogisticRegression()采用l1正则化penalty=‘l1‘,优化方法solver=‘liblinear‘时,正确率为0.9084479371316306,比上面的稍有提高。
(3)采用逻辑斯蒂回归sklearn.linear_model.LogisticRegression()采用默认的正则化即penalty=‘l2‘,优化方法solver=‘lbfgs‘时,正确率为0.9072691552062868
(4)采用逻辑斯蒂回归sklearn.linear_model.LogisticRegression()采用默认的正则化即penalty=‘l2‘,优化方法solver=‘newton-cg‘时,正确率为0.9072691552062868
(5)采用逻辑斯蒂回归sklearn.linear_model.LogisticRegression()采用默认的正则化即penalty=‘l2‘,优化方法solver=‘ sag‘时,正确率为0.906483300589391。预测准确率最差,可能是因为这个优化方法需要训练数据很大,一般大于十万条。
6.实验六
(1)采用svm来训练模型,训练测试数据都喝上一样,但由于计算时间长,取训练集的前一万条数据做训练,测试集不变,得到的正确率为0.6742632612966601
时间为1170.129秒
(2)
以上是关于自然语言分析——实验记录的主要内容,如果未能解决你的问题,请参考以下文章