Beispiel #1
0
# coding:utf8

"""
DESC:自定义去高低词频
Author:伏草惟存
Prompt: code in Python3 env
"""

from StopWords import readFile,seg_doc
from FreqWord import *


def freqword(fdist):
    wordlist =[]
    print('='*3,'打印统计的词频','='*3)
    for key in fdist.keys():
        if fdist.get(key)>2 and fdist.get(key)<15:
            wordlist.append(key+':'+str(fdist.get(key)))
    return wordlist


if __name__=='__main__':
    # 1 读取文本
    path= r'../Corpus/CSCMNews/体育/0.txt'
    str_doc = readFile(path)
    word_list =seg_doc(str_doc)
    # 2 选择高低词
    fdist = nltk_wf_feature(word_list)
    wordlist=freqword(fdist)
    print(wordlist)
    # 该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频
    vectorizer = CountVectorizer() # 构建词汇表
    transformer = TfidfTransformer()  # 该类会统计每个词语的tf-idf权值
    tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus))  # 第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵
    word = vectorizer.get_feature_names()  # 获取词袋模型中的所有词语
    weight = tfidf.toarray()  # 将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重
    for i in range(len(weight)):  # 打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重
        print(u"-------这里输出第", i, u"类文本的词语tf-idf权重------")
        for j in range(len(word)):
            print(word[j], weight[i][j])

if __name__=='__main__':
    corpus =[]
    # corpus参数样例数据如下:
    # corpus = ["我 来到 成都 成都 春熙路 很 开心",
              # "今天 在 宽窄巷子 耍 了 一天 ",
              # "成都 整体 来说 还是 挺 安逸 的",
              # "成都 的 美食 真 巴适 惨 了"]
    # 1 读取文本
    path1= r'../dataSet/CSCMNews/体育/0.txt'
    str_doc1 = readFile(path1)
    word_list1 =' '.join(seg_doc(str_doc1))

    path2= r'../dataSet/CSCMNews/时政/339764.txt'
    str_doc2 = readFile(path2)
    word_list2 =' '.join(seg_doc(str_doc2))

    corpus.append(word_list1)
    corpus.append(word_list2)

    sklearn_tfidf_feature(corpus)