python实现获取文件列表中每个文件出现频率最高的词汇

功能描述:

获取某个路径下的所有文件,提取出每个文件中出现频率最高的前300个字。保存在数据库当中。

前提,你需要配置好nltk

#!/usr/bin/python
#coding=utf-8
'''
function : This script will create a database named mydb then

           abstract keywords of files of privacy police.

author    : Chicho

date      : 2014/7/28

running   : python key_extract.py -d path_of_file
'''

import sys,getopt
import nltk
import MySQLdb
from nltk.corpus import PlaintextCorpusReader

corpus_root = ""

if __name__ == '__main__':

    opts,args = getopt.getopt(sys.argv[1:], "d:h","directory=help")

    #get the directory
    for op,value in opts:
        if op in ("-d", "--directory"):
            corpus_root = value

	#actually, the above method to get  a directory is a little complicated,you can
	#do like this
	'''
	the input include you path and use sys.argv to get the path
	'''
	'''
	running : python key_extract.py you path_of_file
	corpus_root = sys.argv[1]
	'''

    # corpus_root is the directory of files of privacy policy, all of the are html files
    filelists = PlaintextCorpusReader(corpus_root, '.*')

    #get the files' list
    files = filelists.fileids()

    #connect the database
    conn = MySQLdb.connect(host = 'your_personal_host_ip_address', user = 'rusername', port =your_port, passwd = 'U_password')
    #get the cursor
    curs = conn.cursor()

    conn.set_character_set('utf8')
    curs.execute('set names utf8')
    curs.execute('SET CHARACTER SET utf8;')
    curs.execute('SET character_set_connection=utf8;')

    '''
    conn.text_factory=lambda x: unicode(x, 'utf8', "ignore")
    #conn.text_factory=str
    '''	 

    # create a database named mydb
    '''
    try:
        curs.execute("create database mydb")
    except Exception,e:
        print e
    '''

    conn.select_db('mydb')

    try:
        for i in range(300):
            sql = "alter table filekeywords add " + "key" + str(i) + " varchar(45)"
            curs.execute(sql)
    except Exception,e:
        print e

    i = 0
    for privacyfile in files:
        #f = open(privacyfile,'r', encoding= 'utf-8')
        sql = "insert into filekeywords set id =" + str(i)
        curs.execute(sql)
        sql = "update filekeywords set name =" + "'" + privacyfile + "' where id= " + str(i)
        curs.execute(sql)
        # get the words in privacy policy
        wordlist = [w for w in filelists.words(privacyfile) if w.isalpha() and len(w)>2]

        # get the keywords
        fdist = nltk.FreqDist(wordlist)
        vol = fdist.keys()
        key_num = len(vol)
        if key_num > 300:
            key_num = 300
        for j in range(key_num):
            sql = "update filekeywords set " + "key" + str(j) + "=" + "'" + vol[j] + "' where id=" + str(i)
            curs.execute(sql)
        i = i + 1

    conn.commit()
    curs.close()
    conn.close()

转载注明出处:http://blog.csdn.net/chichoxian/article/details/42003603

时间: 2024-11-05 16:24:13

python实现获取文件列表中每个文件出现频率最高的词汇的相关文章

自动备份指定文件列表中的文件到指定文件夹

因为业务需要,在每次页面变更的时候,都需要将原来的文件备份,下边是自己写的一个自动备份的脚本 #!/bin/bash #读取指定文件中文件列表,文件列表中每行一个 #脚本自动读取每行数据,判断文件是否存在,如果存在,则复制到按照时间命名的备份文件中.如果否则记录路径名称 FILE_LISTS=list.txt #定义列表文件名称,脚本必须和文件列表文件在同一目录下 CUR_PATH=`pwd`  #定义当前路径,执行脚本必须到脚本目录,如果要通过计划任务执行,则需要进行一定修改,将此路径修改为指

在文件列表中选择文件,并把一个文件的内容显示在TextArea中

private FileDialog openFileDialog = new FileDialog(this,"Open File",FileDialog.LOAD); else if(eventSource == openFile) { openFileDialog.show(); fileName = openFileDialog.getDirectory()+openFileDialog.getFile(); if(fileName != null) readFile(file

每日学习心得:SharePoint 为列表中的文件夹添加子项(文件夹)、新增指定内容类型的子项、查询列表中指定的文件夹下的内容

前言: 这里主要是针对列表中的文件下新增子项的操作,同时在新建子项时,可以为子项指定特定的内容类型,在某些时候需要查询指定的文件夹下的内容,针对这些场景都一一给力示例和说明,都是一些很小的知识点,希望能够对大家有所帮助. 1.   在列表中为列表项添加子项 为列表添加子项大家都很熟悉,但是如何为列表项添加子项呢?例如列表项是一个文件夹,如何为该文件夹添加子项呢?这里就用到了List.AddItem()方法,具体示例如下: 首先我们要获取列表中的子项: SPListItem root_item=l

C++获取文件夹中所有文件

获取文件夹中的文件,用到过很多次,每次用的时候都要去查下,很烦,所以想自己写下,当然,借鉴了很多其他大佬的博客 主要实现的函数,如下: 1 void getFiles( string path, vector<string>& files ) 2 { 3 //文件句柄 4 long hFile = 0; 5 //文件信息 6 struct _finddata_t fileinfo; 7 string p; 8 if((hFile = _findfirst(p.assign(path).

浏览器中用JavaScript获取剪切板中的文件

本文转自我的个人网站  , 原文地址:http://www.zoucz.com/blog/2016/01/29/get-file-from-clipboard/  ,欢迎前往交流讨论 在网页上编辑内容时,有时候需要插入图片,一般的做法是: 从网络上下载图片至本地 or 截图保存至本地 在编辑器中点击图片上传按钮,选择本地文件,等待上传完成 将上传好的图片链接插入编辑器中 这样做太麻烦了,我比较喜欢的操作是开着QQ或者其他的一些截图工具,截图-粘贴 .为了这样做我们需要在浏览器中获取剪切板中的文件

Python列出文件夹中的文件

几乎所有的关于操作系统的内容可以在python 官方文档中找到:https://docs.python.org/3/library/os.html#module-os 其中os.path被单独列出:https://docs.python.org/3/library/os.path.html#module-os.path os.listdir(path) 可以列出path目录中的文件名子文件夹 os.path.isfile() 可以用来判断是否是文件. 于是可以结合,用来只遍历文件夹中的文件: 1

python遍历文件夹中所有文件夹和文件,os.walk

python中可以用os.walk来遍历某个文件夹中所有文件夹和文件. 例1: import os filePath = 'C:/Users/admin/Desktop/img' for dirpath, dirnames, filenames in os.walk(filePath): print(dirpath, dirnames, filenames) 输出结果: 例2: import os filePath = 'C:\\Users\\admin\\Desktop\\img' for d

遍历文件夹中所有文件(C++)

想要实现对 文件夹 中 文件信息 的 查找与路径获取,需要用到 头文件 #include "io.h" 中的 一个结构体 和 三个函数 1. 结构体 struct _finddata_t 用来存储文件各种信息. struct _finddata_t { unsigned attrib;//文件的属性 time_t time_create;//文件的创建时间 time_t time_access;//文件最后一次被访问的时间 time_t time_write;//文件最后一次被修改的时

Android 读取assets文件夹中json文件

这里要介绍一下 读取assets文件夹中json文件 转换成list 集合 只接看代码 非常简单 public static List<State> getStates(Context context) { InputStream is = null; ByteArrayOutputStream bos = null; try { is = context.getAssets().open("area.json"); bos = new ByteArrayOutputStr