当前位置:   article > 正文

【Python数据挖掘入门】2.2文本分析-中文分词(jieba库cut方法/自定义词典load_userdict/语料库分词)

load_userdict

中文分词就是将一个汉字序列切分成一个一个单独的词。例如:
在这里插入图片描述
另外还有停用词的概念,停用词是指在数据处理时,需要过滤掉的某些字或词。
在这里插入图片描述

一、jieba库

安装过程见:https://blog.csdn.net/momomuabc/article/details/128198306
jieba库的基础与实例:https://blog.csdn.net/momomuabc/article/details/128219592

jieba库基础功能

1.分词函数jieba.cut

import jieba

for i in jieba.cut("我爱python"):
    print(i,end=' ')#利用end参数取消换行
--输出
我 爱 python 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.向词库添加词jieba.add_word()
如果想添加一些专业词汇进入词库,可以使用jieba.add_word()函数
例如:

import jieba

seg_list=jieba.cut("真武七截阵和天罡北斗阵哪个更厉害呢?")
for i in seg_list:
    print(i,end=" ")
--此时输出
真武 七截阵 和 天罡 北斗 阵 哪个 更 厉害 呢 ? 
--可以看到真武七截阵和天罡北斗阵两个专业词汇被拆分开了,那么进行词组添加
jieba.add_word("真武七截阵")
jieba.add_word("天罡北斗阵")
seg_list=jieba.cut("真武七截阵和天罡北斗阵哪个更厉害呢?")
for i in seg_list:
    print(i,end=" ")
--再次输出后,可以看到真武七截阵和天罡北斗阵已经被识别为单独的词
真武七截阵 和 天罡北斗阵 哪个 更 厉害 呢 ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

3.导入词库jieba.load_userdict()
当需要大量导入专业词汇时,使用jieba.add_word()一个个添加会过于麻烦,可以使用jieba.load_userdict()方法将词库一次性导入。
词库中的单词需已每行一个词的方式保存,例如:
在这里插入图片描述

jieba.load_userdict("D:\\2.2 中文分词\\2.2\\金庸武功招式.txt")
  • 1

二、文章分词

1.搭建语料库

上一节已经导入了语料库:https://blog.csdn.net/momomuabc/article/details/129183499
代码如下:

import os
import os.path#读取文件路径
import codecs#转换文件读取格式
import pandas

filePaths = []#设置存储文件路径的变量
fileContents = []#存储文件内容的变量
for root, dirs, files in os.walk(
        "D:\SogouC.mini\Sample"):
        #os.walk()返回文件的目录,子目录,文件名,详情见上篇
    for name in files:
        filePath = os.path.join(root, name)#将目录和子目录拼接为目前的文件路径
        filePaths.append(filePath)#将文件路径存入路径变量
        f = codecs.open(filePath, "r", "utf-8")#以utf-8的格式打开当前路径下的文件
        fileContent = f.read()#读取文件内容
        f.close()#关闭文件
        fileContents.append(fileContent)#将文件内容存入内容变量       
#将文件路径和内容存入DataFrame中
corpos=pandas.DataFrame({
    "filePath":filePaths,
    "fileContent":fileContents
}
)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

2.语料库分词

分词后需要注明,每个分词的来源,因此需要取上面的corpos对象里的filepath,并对filecontent进行分词。

import jieba
Path=[]
segments=[]
for index,row in corpos.iterrows():#返回corpos的内容
    filepath=row["filePath"]#取其中的filepath字段
    segs=jieba.cut(row["fileContent"])#取其中的filecontent字段,并进行分词
    for seg in segs:#将分词后的内容遍历
        segments.append(seg)#存入segments
        Path.append(filepath)#同时存储filepath
segmentDataFrame=pandas.DataFrame(#将分词结果存为数据框
    {
        "filepath":Path,
        "segment":segments
    }
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

iterrow()方法可以返回所有的行索引index,以及该行的所有内容row。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/243381
推荐阅读
相关标签
  

闽ICP备14008679号