23年总结5月总结

一、知识点汇总

5.4-5.13

  • 这周的内容 :云服务器维修,使用scala spark将提供的数据清洗入dm8数据库

    业务分析 地址判断省份 添加省份地址 表之间关联

  • 难点: txt导入dm8 城市表二次更新(添加省份)

个人理解:

  • txt导入dm8,算上周末也是花费了我两天的时间,起初是打算使用spark的文件读取,textFile,一行一行读的,问题出现在转dataFrame不太好做到,只能单独的取出key和value,花费了我一天的时间,思路理清楚了打算用map,按照[和],切割成一个二维集合,然后 内层集合中0是key,1是value,思路清晰以后,发现rdd代码map操作的时候,如果要map进去,外层的rdd会变成一个集合,自动将换行成集合的一个索引值,RDD[String]处理的话,正则就用不了了,因为是一行的,那只能用split按照左右括号切割两次,但是这样拿出来的key和value不是同时的,那也就要将key和value存集合,然后再试着直接value加入数据库,始终无法转成df,spark直接将字符串传数据库也不太好。突然想到能不能用java的io流,后面也是实现了,如果考虑效率的话需要正则和反射加上多线程和并发处理,但其实数据不是很多,我本来打算测试的时候看速度,如果很慢导都导不进去的话就用多线程和并发,最后其实1分钟不到就能就加入数据库,也就没有使用thread。
  • Java使用io流,将txt导入dm8,首先最重要的肯定是用java能连接上dm8,熟悉的DriverManager+Connection+Statement能轻而易举的做到,然后是对txt文件的处理了,正则匹配首先io流是一行一行读取的,所以只要写个正则将[]中的值作为key,后面所有的都为该key对应的value,知道 下一个[]的出现,利用反射,通过key 调用实体类对应的set方法,将key和value作为属性和值,一个文件就是一个对象,将对象存入数组,最后循环数组取值,使用sql语句insert语句+字符串填充导入就行了。
  • 城市表二次更新这里其实主要的难点就是根据城市名找到省份,本来有百度地图的api可以用,但是考虑到服务器是没有网络的,所以就得保存到本地了,将中国省市县的数据收集好,数据是我直接看到一个js数据改成了json,然后就是对json文件的读取,其实搞清楚json的结构,花点时间梳理一下,还是能写出来的,因为数据的问题,所以需要空间复杂度为O3,三次循环嵌套,加一些循环中及时break,减少运行时间。实际测试大概0.2秒能反映出来。

5.15-5.19

  • 这周的学习内容 :城市表修改(省份表独立) python轻web框架flask 推荐算法 TF相似度 TF-IDF模型

    相似度算法 电影标签关键字案例

  • 难点:电影标签关键字案例

个人理解:

  • 相似度推荐算法案例中的预测部分,是通过每个用户对每个电影的评分,然后推测出用户对没评分的电影会评多少分,也就是预测,这种预测主要是用了皮尔逊相关系数。这块基本回一回代码就能举一反三。
  • 电影关键字案例,这个自己敲的时候感到了吃力,主要麻烦的点在类型要转来转去,转的过程中还需要对数据处理,又因为python不是强类型的,会搞不清现在的数据是啥类的。案例思路:根据标签表取电影id和对应的标签关联电影表,得出某电影的标签以及类型,然后把标签统计成词袋,训练TF-IDF模型,也就是计算TF-IDF相似值,得出每个标签所能对应的最相关的前类型。再建立物品的倒排索引,根据tf值和用户表,整个案例就是三表相关数据连接,然后就能通过用户观看过的电影推荐出其他相关电影,看代码和实现过程有点难懂,打算在中软杯根据用户收藏功能也实现一个景区相关推荐。

5.22-5.31

  • 这周的学习内容 :python操作数据库 景区评论高频词统计 评论情绪分析 训练snownlp模型 pyspark运用 flask使用

  • 难点:高频词统计,nlp自然语言处理

个人理解:

  • 高频词统计这里,将每个评论分割成单独的词语或单词,并将它们存储在一个列表中。使用了Python 中的自然语言处理库 pkuseg进行分词处理,分词的时候需要加入除去停用词这个环节,一个txt文件,将一些啊哦这类的词存入,把那些在文本中出现频率很高但没有实际意义的词语过滤掉,按照每个词语的出现频率进行排序,从高到低输出出现频率最高的前 N 个词语。 Pandas 库中的 Dataframe 来实现。总结来说,对评论进行高频词筛选主要包括分词、统计词频、去除停用词和按词频排序等步骤。难点出现在分词的时候,因为没有办法训练数据集,也不知道怎么训练,可能要用第三方的分词模型,所以分出来的词也有很多名词,比如天气,黄鹤楼,没有对应的形容词,现在的水平只能做到这样的处理,研究过别人的分词,像携程旅游评论区也有用分词,看过了基本也不怎么分清,上面写的评论类是景区文化好,下面有很多评论跟文化都不沾边,等基本功能都实现了再回来找找有什么比较好的第三方库使用。
  • 自然语言这块的话在我项目里面其实不算是难点,更像是一个创新点,代码没多少,但是自然语言处理难就难在想要提高识别率太难了,市面上出现的自然语言处理的最高准确度也就一般,发展前景还是可以的,但是不是我这个学历能参与的,我这里是对一句话的情绪分析,找到对景区好评和差评的数据集,进行了训练,训练以后对景区的评论的情绪分析,是有很大的提高,但是还是有很多不是很准确的地方,预估识别率可能70%,携程网的用户点评估计也是用的自然语言处理,但是不知道用的什么库,识别率也不是很高,评论都说很差了,上面还是5星。这一块达到70左右的识别率感觉已经可以了,只要会被看到的评论区不要出现太大的偏差就行了。

二、自我总结

  • 本月是结束大数据的第一个月,也是开始大数据的第一个月,中软杯的这个项目满打满算也一个月了,从选题到现在,但是做的话,大概是十几号才开始,前半个月都是把数据洗到数据库,因为有着大数据的良好基础,所以洗数据除了txt文件以外基本没什么问题,只要转成了dataframe就能直接导入dm8,dm8和mysql中的sql语句大差不大,就是类型有点不太一样,也好解决。后面使用py的时候才是难点,因为基本都要用AI,跟大数据国赛后面挖掘部分是差不多的,这段时间学完以后,发现大数据国赛那块的挖掘其实不是很难,因为spark底层算法都封装好了,只要数据处理成能套用模型算法的格式就行了。后面py还是有很多任务没有做完的,根据用户收藏推荐景区,景区相关度,以及词频优化,还任重而道远。但是时间不是很多了,要抓紧了。现在项目最大的问题是推荐部分想创新难度有点大,以及前端网页的绘制会不会来不及,其次就是功能还没分析全面,有些页面还没有一个很好的构思,表图实现的可行性(推荐部分),所以打算尽快将自己这边的数据以及接口处理好,去帮前端渲染,等平台发布以后,还要解决flask在服务器上运行的问题。