TF-IDF自定义词典库的设计以及IDF的统计

什么是TF-IDF?

哎呀,能看到这篇个人日志,估计你早已明白tf-idf了吧。下面简单啰嗦一下凑字数。
tf:是指当前文本中出现这个单词的频次,在这个文本里面出现越多当然越重要啦。
idf:是指n个文本中有多少个文本出现过这个单词,越特殊越重要的,也就是出现在越少的文本中重要。
tf*idf构成了单词的权重,就我理解这还是比较科学的哈哈哈。

思路流程图

诶,我是没搞好呢,把自己的想法写出来,供大家批判一下是否合理。下面是简单的文本处理流程图

Created with Raphaël 2.3.0 文本数据 去空格 分词 去停用词以及标点 统计全部出现的单词以及出现的文本数量 计算出来单词-IDF 结束

文本基本预处理详细

这部分主要对中文进行预处理,包括去空格、分词、去停用词、保留自定义关键字、去标点符号。当然大佬们应该还会考虑拼写纠错、近义词之类的吧。

去空格

去掉文本中的空格
input:contents为list文本数据
output:去除空格后的文本list

def remove_blank_space(contents):contents_new = map(lambda s: s.replace(' ', ''), contents)return list(contents_new)
分词

对文本进行jieba分词,这里输入是上一步输出的文本list

def cut_words(contents):cut_contents = map(lambda s: list(jieba.lcut(s)), contents)return list(cut_contents)
去除停用词

这里停用词我用了百度的停用词,还有一些个人需要的停用词。同时还加了关键词概念,我怕别把一些我需要的词过滤掉了。

def drop_stopwords(contents):# 初始化获取停用词表stop = open('data/stop_word_cn.txt', 'r+', encoding='utf-8')stop_me = open('./data/stop_me.txt', 'r+', encoding='utf-8')key_words = open('./data/key_words.txt', 'r+', encoding='utf-8')#分割停用词/自定义停用词/关键词stop_words = stop.read().split("\n")stop_me_words = stop_me.read().split("\n")key_words = key_words.read().split("\n")#定义返回后的结果contents_new = []#遍历处理数据for line in contents:line_clean = []for word in line:if (word in stop_words or word in stop_me_words) and word not in key_words:continueif is_chinese_words(word):line_clean.append(word)contents_new.append(line_clean)return contents_new

上面is_chineses_words是判断分词是否是中文,如果是则记录,不是则不记录,主要是对标点符号进行过滤。

词典生成以及IDF的计算

词典生成想法

词典我之前考了一些文档,感觉都不太适合我。于是我采用下面的本方法。

  1. 将所有分词结果统计出来
  2. 然后计算他们的IDF导出,根据IDF在人工过滤一遍。
计算IDF以及词库

统计字典出现的单词以及单词出现的文件个数。输入是上面处理过的文本list,输出是词典和单词出现文本个数。

def deal_contents(contents):# 定义记录idf的数据word_counts = {}# 定义词典dict = []for content in contents:idf_flag = []for word in content:# 第一次出现词if word not in dict:dict.append(word)idf_flag.append(word)word_counts[word] = 1# 在短句中第一次出现elif word not in idf_flag:word_counts[word] = word_counts[word] + 1return dict, word_counts

经过上面方法处理过后,只需要按照公式再次计算一下即可获得idf值啦。输入size为文本总个数,dict词典list,word_counts字典结构单词文件数。输出时pandas的DataFrame,这个是方便我后面的数据处理的,也便于导出csv。

def calc_idf(size, dict, word_counts):idf = []for word in dict:in_list = [word, size / word_counts[word]]idf.append(in_list)return pd.DataFrame(idf, columns=['word', 'idf'])

拿到处理结果后,我打算根据idf的值由大到小撸一遍,很耗时,但我觉得还是比较有效果的

基于TF-IDF算法,来创建自己的词典库(文本预处理并结合关键词库)相关推荐

  1. 关键词提取算法—TF/IDF算法

    关键词提取算法一般可分为有监督学习和无监督学习两类. 有监督的关键词提取方法可以通过分类的方式进行,通过构建一个较为完善的词表,然后判断每个文档与词表中的每个词的匹配程度,以类似打标签的方式,达到关键 ...

  2. 随笔_从《芳华》影评到TF/IDF算法

     前两天看好多<芳华>的影评说:为什么好人没好报?于是感叹一堆世态炎凉,人性丑陋什么的.我觉得这问题是:为什么中央空调(对谁都温暖)往往不被看好.  先说说TF/IDF算法,这是一种信息处 ...

  3. 基于主动学习算法减少人工标注量,提升文本标注效率的方案探究

    基于主动学习算法减少人工标注量,提升文本标注效率的方案探究 阅读 451 收藏 23 2018-06-26 原文链接:yq.aliyun.com OPPO技术开放日第三期,未来的探索 · AI& ...

  4. 搜索引擎:文本分类——TF/IDF算法

    原理 TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类.TFIDF实际上是:TF * IDF,TF ...

  5. DL之GRU:GRU算法相关论文、建立过程(基于TF)、相关思路配图集合、TF代码实现

    DL之GRU:GRU算法相关论文.建立过程(基于TF).相关思路配图集合.TF代码实现 目录 GRU算法相关论文 GRU算法建立过程(基于TF) GRU算法的TF代码实现 GRU算法相关论文 GRU是 ...

  6. tfidf算法 python_tf–idf算法解释及其python代码实现(下)

    tf–idf算法python代码实现 这是我写的一个tf-idf的简单实现的代码,我们知道tfidf=tf*idf,所以可以分别计算tf和idf值在相乘,首先我们创建一个简单的语料库,作为例子,只有四 ...

  7. CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成带背景的不同尺寸高质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例

    CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成带背景的不同尺寸高质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例 目录 基于 ...

  8. CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更高质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用

    CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更高质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用 目录 基于TF框架利 ...

  9. CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更大尺寸的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用

    CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更大尺寸的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用 目录 基于TF框架利 ...

最新文章

  1. 如何在Linux中运用vim命令轻松编辑文件
  2. 解决×××无法上网的心得
  3. Wannafly挑战赛22
  4. 软件测试中的 QM、QA、QC、测试规程、测试用例
  5. Spark练习 - 提交作业到集群 - submit job via cluster
  6. APPium-Xpath,swipe练习
  7. HALCON示例程序sequence_diff.hdev通过两张连续图像进行车辆流量监控
  8. Zookeeper实现注册与发现
  9. 学霸情侣一起投身国防事业,爱情和优秀同时发生了…
  10. TX2开发板Ubuntu16.04安装中文输入法
  11. pyinstaller使用-python项目转换成exe可执行文件
  12. 主流代码扫描静态分析工具
  13. Appium--swipe滑动方法
  14. Warning One or more files are in a conflicted state.
  15. 支持小米java文件阅读器_小米多看电纸书MiReader 桌面LauncherApp(自制软件)
  16. 4G网络要升级成5G,换卡还是换手机?
  17. TIA博途_通过PEEK指令在TP900触摸屏上实现监控所有IO地址的具体方法示例
  18. lintcode-最近公共祖先
  19. 怎么打开计算机的音乐模式,xp开机音乐怎么设置 如何设置开机音乐
  20. python socket发包_python 多线程tcp udp发包 Dos工具。

热门文章

  1. JVM虚拟机内存划分易懂图解
  2. 如何写十万+软文?《100000+软文:爆款软文速成36计》epub百度云下载
  3. P1902 刺杀大使
  4. 《惢客创业日记》2019.04.17(周三)从产品角度看手环的内容服务(2)
  5. Node.js思维导图
  6. 关于希尔排序的一大坑,与冒泡排序有关千万注意
  7. scrapy Filtered offsite request to
  8. jQuery中获取兄弟元素的方法
  9. python做个图片分割界面_python图形化界面设计(wxpython)二分割窗口
  10. 【转载】瑞萨CS+ for CC对单片机IO口进行位操作