Git Product home page Git Product logo

fuck_illness's Introduction

fuck_illness

公众号:超级王登科

文章链接:https://greatdk.com/1513.html

概述

为了写一篇关于疾病的数据分析,我爬取了150万疾病问答数据,并使用python做了数据分析,在这里记录整个过程,并给出代码和数据

爬虫

爬虫文件为:health.pym.py 爬虫没什么好说的,基本的看代码就行,不过有一点,加入多线程后,爬虫隔一段时间效率会下降,甚至卡死,研究了半天也没什么好办法,所以又写了一个监控程序,也就是m.py ,它会每隔五秒钟看一下新增的数据,如果低于一定数量,就重启一次爬虫 GIF.gif

jieba

一开始我习惯性的使用 jieba ,后来我发现我的目的其实只是按照给定字典做词频统计,这个不需要 jieba 就能实现,但既然已经引入了,我就顺便用 jieba 实现了,虽然越到后面发现坑越多,但最后还是实现了,我对比了一下,发现速度也不错。

jieba 词频统计的函数是 jieba.analyse.extract_tags ,所以我一开始就直接用的这个函数

jieba.analyse.set_idf_path('dic_for_idf.txt') #配置自定义字典
tags = jieba.analyse.extract_tags(content, topK=200, withWeight=True)

但这样出现的结果很混乱,因为虽然配置了词频的字典,但是分词的时候会产生许多字典之外的词,他们也有权重,而且这些通用词出现频率更高,会完全压制自定义字典里的词,导致做词频统计,统计到的都不是自定义字典中的

所以我接下来加了一行代码,也同时配置了 jieba 分词的字典

jieba.set_dictionary('dic_for_use.txt') #配置自定义字典
jieba.analyse.set_idf_path('dic_for_idf.txt') #配置自定义字典
tags = jieba.analyse.extract_tags(content, topK=200, withWeight=True)

但还是不行,网上找了资料,发现 jieba 其实还有新词发现功能,需要关闭隐马尔科夫模型,虽然jieba.cut可以配置隐马尔科夫模型的开关,但我调用的jieba.analyse.extract_tags却并没有这个参数,因此我只能修改 jieba 的源码,手动把 隐马尔科夫模型(HMM)给关闭了,修改的地方在 jieba库目录/posseg/init.py,搜索HMM就能找到许多,都改成False即可

为了保险起见,我还在词频统计的核心文件中加了一行判断,103行附近

 if w not in self.idf_freq:
                continue

这样一来就可以完全过滤掉自定义字典之外的词

语料库

我发现搜狗的词库真的是个很不错的地方,有太多医疗相关的语料,不过要注意的是,下载下来不能直接使用,需要使用工具解码,这里推荐『深蓝词库转换』,使用非常方便 深蓝词库

几个要注意的地方

  • dict 比 list 快,但是如果不做其他操作,仅仅是读出来,不要用 for 循环
  • 过滤掉一些停用词,节省时间
  • 各种中文编码问题

数据库数据

https://c-t.work/s/3443c377e7814c

fuck_illness's People

Contributors

wdkwdkwdk avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.