自然语言处理(NLP)—— 淘宝评论处理(1)

文章大纲及涉及的工具库

最近在接触自然语言处理的项目,对目前的情况做一个总结:

  • 项目目标
  • 相关工具库
  • 自然语言处理的基本流程
  • 进一步处理及相关的算法和知识
  • 目前的进展以及所面临的问题

项目目标

对淘宝商品的评论进行归纳,为每条评论进行关键短语的提取,并将关键短语进行聚类标签化。为每个评论打标签。并对评论进行情感分析。


相关工具库

这里为大家介绍一下我在项目中接触的几个工具库,其中的介绍都是个人理解,难免有错误,望请大家海涵并指正。

Pandas

强大的数据分析库,在项目中主要使用DataFrame的数据格式来对项目中的数据进行存储及操作。DataFrame(DF)的形式如同字典,操作的时候主要通过索引来提取数据。在提取列数据时,使用的方法为df.iloc[i,j]df.loc[i][j],是通过索引进行定位来提取,之前的ix方法被系统提示避免使用,因为后期的版本可能不再支持这种方法。DataFrame的to_csv/read_csv/read_table/to_sql/read_sql来进行数据的读入和写入也是特别的方便。

MySqldb

链接数据库的模块,这里使用的MySQL。这里建议自己写成一个模块,这样调用起来比较方便。

Jieba

NPL一个相关的库出现了——Jieba(结巴)分词库。这个主要是用来进行分词的工具库。其中有两种分词的命令,一种是jieba.cut,另一种是Jieba.posseg.cut。其中第一个是默认的分词方法,第二个可以在切分后标注词性(flag)。这两种切词模式切出来的都不是直接的字符串,结果是各自存储格式,需要使用for将结果循环出来。这里推荐使用列表推导式,代码间接,运行较快。另外,使用Jieba进行分词的时候可以自定义词典,这样可以自定义一些新词。在Jieba库中有自带的关键词提取方法,其中使用的算法是TF-IDF和TEXTRANK两个算法。其中TF-IDF使用的IDF是Jieba自带的一个字典,其中定义好常用字的IDF。在应用的时候可以根据自己的需求来修改库中的代码中的字典路径,指向自定义的IDF。不过个人觉得比较适用于文章类的关键字提取,针对于评论语句,感觉不是很好。TEXTPRANK算法主要是根据前后词的关系来进行输出,同样在评语中的应用也不是很理想。

SNOWNLP

中文分词的一个开源的工具库,主要做的是网络购物方向的中文处理工具。其中包括中文分词,情感分析等。其中情感分析主要是根据当前库中收录好的词语进行的评分。其中也有关键字提取,同样个人觉得结果不理想。网上对SnowNLP的评测是针对与电商购物的处理比较准确,其他方面较差。

HANLP

一个开源的中文处理工具库,其代码是用Java写的,所以在使用的时候需要在本机上安装Java环境和jpype库。[插入一句,安装中可能遇到各种各样的坑,网上大部分都有解释,不过这里要说2点:1. Java环境使用java8(目前最新的是10),太新的话hanlp会报错,其中有些文件和文件位置不一样(当初我就是追新,结果各种报错)。2. 如果是从官网下载的话,记得下载相应的java程序包,要不然只有空架子,没有什么内容。]
Hanlp可以做中文分词,词性标注和词语相似度比较,依句法分析和词与词之间的语义距离等。在使用依句法分析的时候,结果是一个java的文件,需要使用循环才可以将内容取出。这里的词语相似度主要是依据源文件中的近义词词典来进行的判断。由于词典年代较远,有些词汇还是无法正确识别的。

Stanford Corenlp

斯坦福自然语言处理工具,其中包括对简体中文处理包,其中包括分词,标注词性,依句法分析,语义分析。其中依句法分析生成的是句法树。在使用的时候遇到的最大问题是不知道如何将句法树解析出来。该工具应该是目前中文处理比较好的。

Gensim

主要使用库中的Word2Vec模型,该模型是谷歌的来源的一个工具模型,用处是对文档建立词向量。具体的原理在后文详细阐述。该库中还有Doc2vec,是一个基于Word2vec的基础上进行的改进模型,也是用来建立词向量。最初word2vec中使用的功能是来计算词之间的相似度,由于感觉Hanlp中的相似度无法计算一些新词的相似度,所以考虑使用评论文本来训练个模型,使相似度的计算更为准确,而后想根据词向量对短语做聚类,效果不太理想,可能是训练时样本不够大。python3中的导入训练好的模型需要使用model中的keyedvector的方法进行导入。

Numpy

Python的数学工具库,其中包括常用的数学公式及矩阵,在使用算法模型时,有些需要将数据转为矩阵。

Scikit-learn

目前最常用的机器学习库。库里包含了常用是机器学习算法。主要用使用了DBSCAN对词向量进行聚类,但是效果不佳。

matplotlib

Python的作图工具库,功能强大,项目中做词云

Wordclound

做词云用的工具库,也算是经常会用的一种工具库。

猜你喜欢

转载自blog.csdn.net/Chaos_Happy/article/details/81781623