python如何打开txt文件、并算词频_python TF-IDF词频算法实现文本关键词提取代码...
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词频算法实现文本关键词提取代码...相关推荐
- python如何打开txt文件、并算词频_Python 合并多个TXT文件并统计词频的实现
需求是:针对三篇英文文章进行分析,计算出现次数最多的 10 个单词 逻辑很清晰简单,不算难, 使用 python 读取多个 txt 文件,将文件的内容写入新的 txt 中,然后对新 txt 文件进行词 ...
- python 英文关键词提取_python TF-IDF算法实现文本关键词提取
TF(Term Frequency)词频,在文章中出现次数最多的词,然而文章中出现次数较多的词并不一定就是关键词,比如常见的对文章本身并没有多大意义的停用词.所以我们需要一个重要性调整系数来衡量一个词 ...
- spss可以关键词词频分析吗_怎么处理中文文本关键词提取和词频分布问题?
对文章中的有效关键词进行分析,是内容推荐算法的核心.这种推荐主要是针对在文本中出现频率较高的词.但是在每篇文章中,往往出现次数最多是"的""是""在& ...
- python怎么读取txt文件内容然后保存到excel-Python实现读取txt文件并转换为excel的方法示例...
本文实例讲述了Python实现读取txt文件并转换为excel的方法.分享给大家供大家参考,具体如下: 这里的txt文件内容格式为: 892天平天国定都在?A开封B南京C北京(B) Python代码如 ...
- python读取txt文件代码-python批量处理txt文件的实例代码
通过python对多个txt文件进行处理 读取路径,读取文件 获取文件名,路径名 对响应的文件夹名字进行排序 对txt文件内部的数据相应的某一列/某一行进行均值处理 写入到事先准备好的Excel文件中 ...
- python导入txt文件并绘图-Python实现读取txt文件中的数据并绘制出图形操作示例
本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...
- python如何导入txt文件-python如何将数据写入本地txt文本文件
一.读写txt文件 1.打开txt文件file_handle=open('1.txt',mode='w') 上述函数参数有(1.文件名,mode模式) mode模式有以下几种:#w 只能操作写入 r ...
- python读取整个txt文件-python怎么读取txt文件内容
读取文件: 步骤:打开 -- 读取 -- 关闭>>> f = open('/tmp/test.txt') >>> f.read() 'hello python! h ...
- python读取所有txt文件_python如何批量读取txt文件
python批量读取txt文件的方法:首先导入系统模块:然后将文件夹路径更改为需要批量读取的txt文件存放的路径:再调用系统模块得到该文件夹下的所有文件名称:最后遍历文件夹,读取txt文件. 如果文件 ...
最新文章
- 概率论-1.3 概率的性质(重点:可列与极限之间的互相转换)
- python自动化框架测试实操_自动化框架之 python+selenium+pytest
- python海龟图画龙珠_火影,海贼王,七龙珠,还在为漫画书发愁!我用Python一键生成电子漫画书...
- leetcode - 674. 最长连续递增序列
- linux安装python_如何在 Windows 上安装 Python | Linux 中国
- 2022计算机三级数据库总结和经验(有免费题库)
- 在SCI-Hub上下载国外论文
- Blend Shape Pose Animation
- WPF路径绘图制作心形
- 大学python考试题及答案_中国大学慕课mooc用Python玩转数据期末考试大全答案
- 1.Diagno-基本概述
- 服务器put请求获取不到参数
- python求均方根,python中函数的均方根
- 程序分析-对程序依赖图(PDG)的理解
- Mac电脑SecureCRT安装步骤
- CS/BS架构是什么?以及他们的区别
- 查看oracle操作日志
- 有了Service Mesh,还需要API网关么?
- 支付系统保证可靠性的秘诀 ----- 订单的补偿和补单
- 计算机专业英语试题2,计算机专业英语试题2
热门文章
- POJ3185 The Water Bowls(反转法or dfs 爆搜)
- 我是如何从程序小白成为码农的
- 让Team Exploer自动登录TFS
- JavaScript与Asp.net传值
- stm32f103c8t6芯片IAP升级填坑记
- 解决STM32 SPI 半残废 NSS无法拉高
- (chap9 基于HTTP的功能追加协议) Web 服务器管理文件的 WebDAV
- 【Flask】Flask-RESTful 风格编程
- [ARM异常]-异常进入和异常退出时的arm core的硬件自动的行为
- 自用零散博文-route_state.ts