2.文本分析

1. 词频统计–语料库的构建

文本挖掘:将文本信息转换为可利用的知识。通常,对大量文件的归类,一般通过建立不同的文件夹,来保存不同的文章。

同样的,将需要分析的【文本文件】读取到【变量】中,然后在内存中使用不同的数据结构对这些文本文件进行存储,进行下一步的分析。这个【内存变量】就是我们要学的【语料库】。

【语料库】:要分析的所有文档的集合

import os
import os.path

filePaths=[]
for root, dirs, files in os.walk("F:\\2.1 语料库\\2.1\\SogouC.mini\\Sample"):
    #os.path.join()拼接文件路径的方法
    for name in files:
        filePaths.append(os.path.join(root, name))  # 路径+文件名
for root, dirs, files in os.walk("F:\\2.1 语料库\\2.1\\SogouC.mini\\Sample"):
    print(root)  # D:\学习资料\2.1 语料库\2.1\SogouC.mini\Sample\C000013
    print(dirs)
    print(files)  # ['10.txt', '11.txt', '12.txt', '13.txt', '14.txt', '15.txt', '16.txt', '17.txt', '18.txt', '19.txt']

读取数据

import codecs

filePaths = []
fileContents = []
for root, dirs, files in os.walk("F:\\2.1 语料库\\2.1\\SogouC.mini\\Sample"):
    for name in files:
        filePath = os.path.join(root, name)
        filePaths.append(filePath)
        f = codecs.open(filePath, 'r', 'utf-8')
        # 调用read( ),将内容读取出来,保存到fileContent中
        fileContent = f.read()
        f.close()
        fileContents.append(fileContent)

构建【语料库】,它是 DataFrame 格式

import pandas

# 将获取到的文件内容组织成一个数据框,,框 就是语料库,创建语料库corpos
corpos = pandas.DataFrame({
    
    
    'filePath': filePaths,
    'fileContent': fileContents
})

语料库: 文件路径 文件内容
在这里插入图片描述

总结:【语料库】的构建
构建方法:os.walk(fileDir) #fileDir表示【文件路径】
【文件读取】:codecs.open(filePath,method,encoding)
拼接文件路径:os.path.join(root,name)

2. 词频统计–中文分词

  1. 安装 jieba
pip install jieba
- jieba.cut(content)  # content 需要分词的句子
- 返回 segents ,分词的数组
- jieba.add_word()
  1. 优化分词效果
  • 增加自定义分词
jieba.add_word(word)  # word 需要增加的分词
jieba.add_word("天罡北斗阵")
  • 导入自定义词典
jieba.load_user(filePath)  # filePath 自定义词典所在的路径
jieba.load_userdict("F:\\2.2 中文分词\\2.2\\金庸武功招式.txt")
  1. 具体步骤
    分词
import jieba
filePaths, segments = [], []
for index, row in corpos.iterrows():
    filePath = row['filePath']
    fileContent = row['fileContent']
    segs = jieba.cut(fileContent)
    for seg in segs:
        if len(seg.strip())>0:
            segments.append(seg)
            filePaths.append(filePath)
filePaths, segments = [], []
for index, row in corpos.iterrows():
    print(row['filePath'])
    print(row['fileContent'])

在这里插入图片描述
新的数据框

segDF = pandas.DataFrame({
    
    
        'filePath':filePaths,
        'segment':segments })

在这里插入图片描述
iterrows(): 将DataFrame迭代为(insex, Series)对。

  • 2 对文章分词后,每个分词后面都需要跟着一个信息——该分词来源于哪篇文章,所以要指出分词的【出处】
    • 2.1 使用【数据框】的遍历方法corpos.iterrows(),遍历【语料库】中的每一行数据
    • 2.2 获取的行row作为【字典】 通过列名,使用【字典的值】的获取方法,获取【文件路径】和【文件内容】
import jieba

segments=[]
filePaths=[]
for index, row in corpos.iterrows():
    #此次获取的是corpos的内容
    filePath=row['filePath']
    fileContent=row['fileContent']    
    #2.2调用jieba.cut()方法,对文章进行分词
    segs=jieba.cut(fileContent)
    for seg in segs:
        segments.append(seg)
        filePaths.append(filePath)
#2.3将得到的结果存储到一个【数据框】中,
segmentDataFrame = pandas.DataFrame({
    
    
    'segment': segments, 
    'filePath': filePaths
})

猜你喜欢

转载自blog.csdn.net/weixin_46713695/article/details/131353949