TF(Term Frequency)词频,在文章中出现次数最多的词,然而文章中出现次数较多的词并不一定就是关键词,比如常见的对文章本身并没有多大意义的停用词。所以我们需要一个重要性调整系数来衡量一个词是不是常见词。该权重为IDF(Inverse Document Frequency)逆文档频率,它的大小与一个词的常见程度成反比。在我们得到词频(TF)和逆文档频率(IDF)以后,将两个值相乘,即可得到一个词的TF-IDF值,某个词对文章的重要性越高,其TF-IDF值就越大,所以排在最前面的几个词就是文章的关键词。

TF-IDF算法的优点是简单快速,结果比较符合实际情况,但是单纯以“词频”衡量一个词的重要性,不够全面,有时候重要的词可能出现的次数并不多,而且这种算法无法体现词的位置信息,出现位置靠前的词和出现位置靠后的词,都被视为同样重要,是不合理的。

TF-IDF算法步骤:

(1)、计算词频:

词频 = 某个词在文章中出现的次数

考虑到文章有长短之分,考虑到不同文章之间的比较,将词频进行标准化

词频 = 某个词在文章中出现的次数/文章的总词数

词频 = 某个词在文章中出现的次数/该文出现次数最多的词出现的次数

(2)、计算逆文档频率

需要一个语料库(corpus)来模拟语言的使用环境。

逆文档频率 = log(语料库的文档总数/(包含该词的文档数 + 1))

(3)、计算TF-IDF

TF-IDF = 词频(TF)* 逆文档频率(IDF)

详细代码如下:

#!/usr/bin/env python

#-*- coding:utf-8 -*-

'''

计算文档的TF-IDF

'''

import codecs

import os

import math

import shutil

#读取文本文件

def readtxt(path):

with codecs.open(path,"r",encoding="utf-8") as f:

content = ().strip()

return content

#统计词频

def count_word(content):

word_dic ={}

words_list = ("/")

del_word = ["\r\n","/s"," ","/n"]

for word in words_list:

if word not in del_word:

if word in word_dic:

word_dic[word] = word_dic[word]+1

else:

word_dic[word] = 1

return word_dic

#遍历文件夹

def funfolder(path):

filesArray = []

for root,dirs,files in os.walk(path):

for file in files:

each_file = str(root+"//"+file)

(each_file)

return filesArray

#计算TF-IDF

def count_tfidf(word_dic,words_dic,files_Array):

word_idf={}

word_tfidf = {}

num_files = len(files_Array)

for word in word_dic:

for words in words_dic:

if word in words:

if word in word_idf:

word_idf[word] = word_idf[word] + 1

else:

word_idf[word] = 1

for key,value in word_dic.items():

if key !=" ":

word_tfidf[key] = value * (num_files/(word_idf[key]+1))

#降序排序

values_list = sorted((),key = lambda item:item[1],reverse=True)

return values_list

#新建文件夹

def buildfolder(path):

if os.path.exists(path):

(path)

(path)

print("成功创建文件夹!")

#写入文件

def out_file(path,content_list):

with codecs.open(path,"a",encoding="utf-8") as f:

for content in content_list:

(str(content[0]) + ":" + str(content[1])+"\r\n")

print("well done!")

def main():

#遍历文件夹

folder_path = r"分词结果"

files_array = funfolder(folder_path)

#生成语料库

files_dic = []

for file_path in files_array:

file = readtxt(file_path)

word_dic = count_word(file)

(word_dic)

#新建文件夹

new_folder = r"tfidf计算结果"

buildfolder(new_folder)

#计算tf-idf,并将结果存入txt

i=0

for file in files_dic:

tf_idf = count_tfidf(file,files_dic,files_array)

files_path = files_array[i].split("//")

#print(files_path)

outfile_name = files_path[1]

#print(outfile_name)

out_path = r"%s//%"%(new_folder,outfile_name)

out_file(out_path,tf_idf)

i=i+1

if __name__ == '__main__':

main()

python如何打开txt文件、并算词频_python TF-IDF词频算法实现文本关键词提取代码...相关推荐

  1. python如何打开txt文件、并算词频_Python 合并多个TXT文件并统计词频的实现

    需求是:针对三篇英文文章进行分析,计算出现次数最多的 10 个单词 逻辑很清晰简单,不算难, 使用 python 读取多个 txt 文件,将文件的内容写入新的 txt 中,然后对新 txt 文件进行词 ...

  2. python 英文关键词提取_python TF-IDF算法实现文本关键词提取

    TF(Term Frequency)词频,在文章中出现次数最多的词,然而文章中出现次数较多的词并不一定就是关键词,比如常见的对文章本身并没有多大意义的停用词.所以我们需要一个重要性调整系数来衡量一个词 ...

  3. spss可以关键词词频分析吗_怎么处理中文文本关键词提取和词频分布问题?

    对文章中的有效关键词进行分析,是内容推荐算法的核心.这种推荐主要是针对在文本中出现频率较高的词.但是在每篇文章中,往往出现次数最多是"的""是""在& ...

  4. python怎么读取txt文件内容然后保存到excel-Python实现读取txt文件并转换为excel的方法示例...

    本文实例讲述了Python实现读取txt文件并转换为excel的方法.分享给大家供大家参考,具体如下: 这里的txt文件内容格式为: 892天平天国定都在?A开封B南京C北京(B) Python代码如 ...

  5. python读取txt文件代码-python批量处理txt文件的实例代码

    通过python对多个txt文件进行处理 读取路径,读取文件 获取文件名,路径名 对响应的文件夹名字进行排序 对txt文件内部的数据相应的某一列/某一行进行均值处理 写入到事先准备好的Excel文件中 ...

  6. python导入txt文件并绘图-Python实现读取txt文件中的数据并绘制出图形操作示例

    本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...

  7. python如何导入txt文件-python如何将数据写入本地txt文本文件

    一.读写txt文件 1.打开txt文件file_handle=open('1.txt',mode='w') 上述函数参数有(1.文件名,mode模式) mode模式有以下几种:#w 只能操作写入 r ...

  8. python读取整个txt文件-python怎么读取txt文件内容

    读取文件: 步骤:打开 -- 读取 -- 关闭>>> f = open('/tmp/test.txt') >>> f.read() 'hello python! h ...

  9. python读取所有txt文件_python如何批量读取txt文件

    python批量读取txt文件的方法:首先导入系统模块:然后将文件夹路径更改为需要批量读取的txt文件存放的路径:再调用系统模块得到该文件夹下的所有文件名称:最后遍历文件夹,读取txt文件. 如果文件 ...

最新文章

  1. 概率论-1.3 概率的性质(重点:可列与极限之间的互相转换)
  2. python自动化框架测试实操_自动化框架之 python+selenium+pytest
  3. python海龟图画龙珠_火影,海贼王,七龙珠,还在为漫画书发愁!我用Python一键生成电子漫画书...
  4. leetcode - 674. 最长连续递增序列
  5. linux安装python_如何在 Windows 上安装 Python | Linux 中国
  6. 2022计算机三级数据库总结和经验(有免费题库)
  7. 在SCI-Hub上下载国外论文
  8. Blend Shape Pose Animation
  9. WPF路径绘图制作心形
  10. 大学python考试题及答案_中国大学慕课mooc用Python玩转数据期末考试大全答案
  11. 1.Diagno-基本概述
  12. 服务器put请求获取不到参数
  13. python求均方根,python中函数的均方根
  14. 程序分析-对程序依赖图(PDG)的理解
  15. Mac电脑SecureCRT安装步骤
  16. CS/BS架构是什么?以及他们的区别
  17. 查看oracle操作日志
  18. 有了Service Mesh,还需要API网关么?
  19. 支付系统保证可靠性的秘诀 ----- 订单的补偿和补单
  20. 计算机专业英语试题2,计算机专业英语试题2

热门文章

  1. POJ3185 The Water Bowls(反转法or dfs 爆搜)
  2. 我是如何从程序小白成为码农的
  3. 让Team Exploer自动登录TFS
  4. JavaScript与Asp.net传值
  5. stm32f103c8t6芯片IAP升级填坑记
  6. 解决STM32 SPI 半残废 NSS无法拉高
  7. (chap9 基于HTTP的功能追加协议) Web 服务器管理文件的 WebDAV
  8. 【Flask】Flask-RESTful 风格编程
  9. [ARM异常]-异常进入和异常退出时的arm core的硬件自动的行为
  10. 自用零散博文-route_state.ts