当前位置:   article > 正文

分词及去停用词(可用作科研实验)python_python分词停用词库

python分词停用词库

写在前面:毕业要发四区论文,故开始了苦逼看论文写代码之旅,现论文已发出。网上少见对中文文本进行预处理的可以用作科研的代码,故贴出,想要资源的可移步此下载
2022.3.2:中午就改了一下代码,直接审核不通过说违法违规????
一、资源结构
1.资源结构如下图:
在这里插入图片描述
2.把需要分词和去停用词的中文数据放入allData文件夹下的originalData文件夹,依次运行1.cutWord.py和2removeStopWord.py之后,allData文件夹下的afterRemoveStopWordData文件夹就是最终分词且去停用词之后的文件。
注意:originalData文件夹下的中文数据是以txt文件为单位存储的,一个新闻或一条微博就是一个txt文件
3.allData文件夹下的stopWordList文件夹里面有川大、哈工大、百度、自定义的停用词表(txt文件)
二、代码:
1.cutWord.py

"""
使用jieba分词
参考网址:https://blog.csdn.net/xiaoquantouer/article/details/53583980
"""
import os
import re
import jieba

#定义正则表达式可以文本中的数字、英文大小写字母!有需要还可以加,如:"[a-zA-Z0-9\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、:;;《》“”~@#¥%……&*()]+"
r1 = "[a-zA-Z0-9]+"

#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
#分词之前,删除结果文件中所有文件
for x in os.listdir("allData\\afterCutWordData\\"):
    os.remove(u"allData\\afterCutWordData\\"+x)
#分词
for x in os.listdir("allData\originalData\\"):
    startFile = open(u"allData\originalData\\"+x,'r',encoding='utf-8') #打开原始数据
    endFile = open(u"allData\\afterCutWordData\\"+x,'w+',encoding='utf-8') #创建并打开分词后的数据
    lines = startFile.readlines()#readlines()方法一次性读取整个文件;自动将文件内容分析成一个行的列表.注意是列表!!!
    for line in lines:
        data = re.sub(r1, '', line)#正则表达式去除数字,去停用词可去除9,但无法去除2009等数字
        word=data.replace("\t","").replace("\n","").replace("!", "").replace("?", "").replace(":", "").\
            replace("。", "").replace("、", "").replace(";", "").replace("“", "").replace("”", "").replace("‘", "").\
            replace("’", "").replace(",", "").replace("《", "").replace("》", "").replace("{", "").replace("}", "").\
            replace(" ","").replace("▲","").replace("▼","") .replace("【","") .replace("】","") .replace("…","").\
            replace("■","").replace(" ","").replace("—","").replace("·","").replace("(","").replace(")","").\
            replace("[","").replace("]","").replace("-","").replace("%","").replace(".","").replace("°","") .\
            replace("(","") .replace(")","").replace("?","").replace("●","")   #替换中文文本中的标点符号
        seg_list = jieba.cut(word, cut_all=False)
        endFile.write(" ".join(seg_list)) # ""中内容为分词之后用于隔离的符号,符号可以是,/ ;或者空格
    startFile.close()#关闭文件
    endFile.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

2removeStopWord.py

"""
使用停用词表分词
参考网址:https://blog.csdn.net/u012052268/article/details/77825981#52__118
"""
import os
# 创建停用词list
import jieba

def stopwordslist(filepath):
    stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]
    return stopwords

stopwords1 = stopwordslist(u"allData\stopWordList\\baidu_stopwords.txt")  # 这里加载百度停用词的路径
stopwords2 = stopwordslist(u"allData\stopWordList\cn_stopwords.txt")  # 这里加载中文停用词的路径
stopwords3 = stopwordslist(u"allData\stopWordList\hit_stopwords.txt")  # 这里加载哈工大停用词的路径
stopwords4 = stopwordslist(u"allData\stopWordList\scu_stopwords.txt")  # 这里加载四川大学停用词的路径

# 对句子进行分词并去停用词
def RemoveStopWord(WORD):
    resultStr=''
    x = jieba.cut(WORD.strip())
    for word in x:
        if (word not in stopwords1) & (word not in stopwords2) & (word not in stopwords3) & (word not in stopwords4) :
            if word != " ":
                resultStr += word
                resultStr += " "
    return resultStr
#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
#在去停用词之前,删除结果文件夹中所有数据
for x in os.listdir("allData\\afterRemoveStopWordData\\"):
    os.remove(u"allData\\afterRemoveStopWordData\\"+x)
#去停用词操作
for x in os.listdir("allData\\afterCutWordData\\"):
    startFile = open(u"allData\\afterCutWordData\\"+x,'r',encoding='utf-8')#打开待去停用词的数据
    endFile = open(u"allData\\afterRemoveStopWordData\\"+x,'w+',encoding='utf-8')#创建并打开去停用词后的数据

    for x in startFile:
        word = RemoveStopWord(x)  # 这里的返回值是字符串
        endFile.write(word)

    startFile.close()
    endFile.close()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

三、结果
示例:

马晓旭意外受伤让国奥警惕 无奈大雨格外青睐殷家军
  记者傅亚雨沈阳报道 来到沈阳,国奥队依然没有摆脱雨水的困扰。731日下午6点,国奥队的日常训练再度受到大雨的干扰,无奈之下队员们只慢跑了25分钟就草草收场。
  
  31日上午10点,国奥队在奥体中心外场训练的时候,天就是阴沉沉的,气象预报显示当天下午沈阳就有大雨,但幸好队伍上午的训练并没有受到任何干扰。
  
  下午6点,当球队抵达训练场时,大雨已经下了几个小时,而且丝毫没有停下来的意思。抱着试一试的态度,球队开始了当天下午的例行训练,25分钟过去了,天气没有任何转好的迹象,为了保护球员们,国奥队决定中止当天的训练,全队立即返回酒店。
  
  在雨中训练对足球队来说并不是什么稀罕事,但在奥运会即将开始之前,全队变得“娇贵”了。在沈阳最后一周的训练,国奥队首先要保证现有的球员不再出现意外的伤病情况以免影响正式比赛,因此这一阶段控制训练受伤、控制感冒等疾病的出现被队伍放在了相当重要的位置。而抵达沈阳之后,中后卫冯萧霆就一直没有训练,冯萧霆是727日在长春患上了感冒,因此也没有参加29日跟塞尔维亚的热身赛。队伍介绍说,冯萧霆并没有出现发烧症状,但为了安全起见,这两天还是让他静养休息,等感冒彻底好了之后再恢复训练。由于有了冯萧霆这个例子,因此国奥队对雨中训练就显得特别谨慎,主要是担心球员们受凉而引发感冒,造成非战斗减员。而女足队员马晓旭在热身赛中受伤导致无缘奥运的前科,也让在沈阳的国奥队现在格外警惕,“训练中不断嘱咐队员们要注意动作,我们可不能再出这样的事情了。”一位工作人员表示。
  
  从长春到沈阳,雨水一路伴随着国奥队,“也邪了,我们走到哪儿雨就下到哪儿,在长春几次训练都被大雨给搅和了,没想到来沈阳又碰到这种事情。”一位国奥球员也对雨水的“青睐”有些不解。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

分词且去停用词结果:

马晓旭 意外 受伤 国奥 警惕 无奈 大雨 青睐 殷家 军 记者 傅亚雨 沈阳 报道 来到 沈阳 国
奥队 依然 摆脱 雨水 困扰 下午 点 国奥队 日常 训练 再度 大雨 干扰 无奈 之下 队员 慢跑 
分钟 草草收场 上午 点 国奥队 奥体中心 外场 训练 天 阴沉沉 气象预报 显示 当天 下午 沈
阳 大雨 幸好 队伍 上午 训练 干扰 下午 点当 球队 抵达 训练场 大雨 几个 小时 丝毫 停下
来 抱 试一试 态度 球队 当天 下午 例行 训练 分钟 天气 转好 迹象 保护 球员 国奥队 中止 
当天 训练 全队 返回 酒店 雨 中 训练 足球队 稀罕 事 奥运会 全队 变得 娇贵 沈阳 一周 
训练 国奥队 保证 现有 球员 出现意外 伤病 情况 影响 正式 比赛 这一 阶段 控制 训练 受
伤 控制 感冒 疾病 队伍 放在 位置 抵达 沈阳 中 后卫 冯萧霆 训练 冯萧霆 长春 患上 感冒 
参加 塞尔维亚 热身赛 队伍 介绍 说 冯萧霆 发烧 症状 见 两天 静养 休息 感冒 恢复 训练 
冯萧霆 例子 国奥队 对雨中 训练 显得 特别 谨慎 担心 球员 受凉 引发 感冒 非战斗 减员 
女足 队员 马晓旭 热身赛 中 受伤 导致 无缘 奥运 前科 沈阳 国奥队 警惕 训练 中 嘱咐 队
员 动作 再出 事情 一位 工作人员 长春 沈阳 雨水 一路 伴随 国奥队 邪 走 雨 长春 几次 
训练 大雨 搅和 没想到 沈阳 碰到 事情 一位 国奥 球员 雨水 青睐 不解 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/617466
推荐阅读
相关标签
  

闽ICP备14008679号