计算机组成原理哪本书比较好,学计算机组成原理需要什么基础
昨晚我在雪地里发现了这个图书馆。我很开心。来说说我开心的原因吧。我本科毕业设计是文本挖掘,是用R语言做的。我发现R语言对文本处理特别不友好,功能强大的库也不多,尤其是中文文本。况且我那时候也没学过机器学习算法。所以,我很头疼,只好用一个可视化软件RostCM。但是一般可视化软件最大的缺点就是不能调整参数,很死板,精度不高。现在学习完机器学习算法,想继续学习文本挖掘。所以前半个月我开始用python学习文本挖掘。很多人推荐我从《python自然语言处理》这本书开始。经过半个月的学习,本科毕业的时候可能会有一些基础知识。看完这个感觉没多大进步。此外,nltk库用于英语文本挖掘。英文文本挖掘和中文差别很大,或者说学完英文文本挖掘再做中文完全是愚蠢的。于是就停了,觉得太没效率了。然后在网上搜索python如何挖掘中文文本的文章,最后找到了库snownlp。这个库是中国人开发的python类库,专门挖掘中文文本。里面已经有算法了,需要自己调用函数。根据不同的文本建立一个语料库真的很方便。我只介绍这个库的具体应用,不介绍相关的算法原理,因为算法原理是可以自学的。因为我在学习这个库的时候查了很多资料,发现很少有或者根本没有这个库的例子,很多都是官网对这个库的简介的转载,所以今天就把我的学习记录下来了。
先简单介绍一下这个库中可以做什么文本挖掘。Snownlp主要可以用于中文分词(算法是基于字符的生成模型)、词性标注(原理是TnT,3-gram隐马)、情感分析(官网Mu有介绍原理,但是表示购物的评论准确率高,其实是因为它的语料库主要是关于购物的,所以你可以自己建立相关领域的语料库来代替原来的。准确率也相当不错)、文本分类(原理是朴素贝叶斯)、拼音转换、繁简转换、文本关键词提取(原理是TextRank)、摘要提取(原理是TextRank)、句子切分和文本相似度(原理是BM25)。官网有更多关于这个库的信息。在看我的文章之前,我建议你看一下官网,里面有一些基本的命令。官方网站链接:https://pypi.python.org/pypi/snownlp/0.11.1.
下面正式介绍示例应用程序。主要是对中文文本的情感分析。今天,我从JD.COM网站收集了249条关于笔记本的评论作为练习数据。因为我只是想练习,所以就没再收了。然后手动标记每个评论的积极情绪。情绪积极是指评论代表了什么态度,是积极的还是消极的。以下是一个示例:
其中-1表示贬义,1表示正义。由于snownlp都是unicode编码的,所以注意数据是否是unicode编码的非常重要。因为是unicode编码,所以不需要去掉中文文本中包含的英文,因为会转码成统一的代码(补充一下,我对编码问题还不是特别清楚,这里就不说了,请熟悉的伙伴多指教)。软件本身的默认代码是Ascii,所以第一步是将软件的默认代码设置为utf-8。代码如下:
1.更改软件的默认代码。
导入系统
重新加载(系统)
sys.setdefaultencoding(utf-8 )
2.然后准备数据。
导入熊猫作为pd #加载熊猫
Text=pd.read_excel(uF:/自然语言处理/注释text.xlsx ,header=0) #读取文本数据
0=text.iloc [:0] #提取所有数据
1=[I . decode( UTF-8 )for I in text 0]#上一步提取的数据不是字符而是对象,所以在这一步转码为字符。
3.训练语料库
从snownlp导入情感#加载情感分析模块
sensition . Train( e:/anaconda 2/lib/site-packages/snownlp/sentient/neg . txt , e:/anaconda 2/lib/site-packages/snownlp/sentient/pos . txt )#训练语料库,将路径改为本练习中我没有建立语料库,使用的是默认的,所以我把路径写在了情感模块下。
情操.保存( d:/py script/sentient . marshal )#这一步是保存上一步的训练结果。如果以后语料库没变,下次就不用再训练了。直接用就可以了,所以一定要保存。你可以决定把它保存在哪里,但是你应该把 snownlp/seg/_ _ init _ _。py `。
4.做预测。
从snownlp导入SnowNLP
Senti=[snownlp (i)。text1] #中I的sentients遍历每个注释以做出预测。
5.验证准确性。
预测结果为正概率,正概率大于等于0.6。我觉得可以判断为正面情绪,小于0.6的判断为负面情绪。所以概率大于等于0.6的评论标签下面赋1,概率小于0.6的评论标签下面赋-1,方便后面和实际标签对比。
纽森蒂=[]
因为我感觉:
如果(i=0.6):
newsenti.append(1)
否则:
newsenti.append(-1)
Text[predict]=newsenti #将新的预测标签添加到一列文本中,因此现在第0列文本是注释文本,第1列是实际标签,第2列是预测标签。
计数=0
对于in range (len (text.iloc [:0]): #遍历所有标签,比较预测标签和实际标签,如果相同,则判断正确。
if text.iloc[j,2]==text.iloc[j,1]:
计数=1
print 的准确度是:% f %(float(counts)/float(len(text))#输出此预测的准确度。
运行结果是:
准确率还可以,但是不高,因为我考虑的是时间,而且我也只是练习,所以没有自建这方面的语料库。如果我建立一个相关的语料库,替换掉默认的语料库,准确率会高很多。因此,语料库非常关键。如果想正式挖掘文本,建议自建语料库。在没有建立新语料库的情况下,83.9357%的准确率是不错的。
这些是我这次的学习笔记。我想与你分享它们。如有不足之处,请批评指正。我还是一个刚刚涉足数据挖掘、机器学习、文本挖掘等领域的快乐金毛。我有很多模糊的知识,但是我对这个数据挖掘很感兴趣。希望能在这方面多交些朋友,共同学习进步。
来自:博客