文档章节

结巴分词器

s_zpchen1
 s_zpchen1
发布于 2017/04/11 23:27
字数 527
阅读 20
收藏 0

很久没有上来签到了。今晚研究了 结巴分词器,关于目录的写法,撞了好几次才能成功

 

path=u“F:\\ABC\\dd”

前面带U  斜杠要写两次,因为要\转义

附上源代码

#!/usr/bin/python
#-*- coding: utf-8 -*-

import sys
import os
import jieba
import re
from imp import reload
reload(sys)

#对中文文本数据集进行分词
'''注意:
        1、输入的数据集路径必须是基目录/数据集名,数据集下是类别子目录,类别下是文本
        2、停用词表被放在了程序的当前目录下
        3、停用词表是我自己整理的,可以改用别的,或者不去掉停用词
        4、分词结果只包含中文\u4e00-\u9fa5,无其他特殊符合和数字
        5、如遇编码问题,请自行百度
'''
#对文本进行分词
def segment(textpath,savepath):
    global stopwords
    content=open(textpath,'r+').read()#读取文本内容
    writer=open(savepath,'w+')
    #content=content.decode('gb2312','ignore')#将gbk编码转为unicode编码
    #content=content.encode('utf-8','ignore')#将unicode编码转为utf-8编码
    #print content  #打印文本内容
    text=jieba.cut(content)#分词,默认是精确分词
    #print "/".join(text)
    for word in text:
        #通过合并所有中文内容得到纯中文内容
        word=''.join(re.findall(u'[\u4e00-\u9fa5]+', word))#去掉不是中文的内容
        word=word.strip()
        if(len(word)!=0 and not stopwords.__contains__(word)):#去掉在停用词表中出现的内容
            #print word
            writer.write(word+"\n")
    writer.flush()
    writer.close()
    print (savepath+"保存好了")

#对整个文本集进行分词
def main(dir_name,tar_name):    
    if(not os.path.exists(tar_name)):
        os.mkdir(tar_name)#不存在则新建目录
    classes=os.listdir(dir_name)#该目录下的子目录,即各个类别
    for c in classes:
        #print c #类别
        label=dir_name+"/"+c
        files=os.listdir(label)#获取目录下的所有文本文件
        tarLabel=tar_name+"/"+c#将文本保存在相应类别的目录下
        if(not os.path.exists(tarLabel)):
            os.mkdir(tarLabel)
        #print files
        for f in files:
            #print f         #打印文件名
            textpath=label+"/"+f
            savepath=tarLabel+"/"+f
            segment(textpath,savepath)

dir_name = u"F:\\工作\\python之路\\数据分析\\文本分析\\文本库"#数据集路径
tar_name=u"trainSegment"#保存路径
stopwords = [line.strip() for line in open('cstopword.dic').readlines() ]#读取中文停用词表
main(dir_name,tar_name)
 

© 著作权归作者所有

s_zpchen1
粉丝 0
博文 11
码字总数 2255
作品 0
佛山
私信 提问
python 分词 jieba

jieba.cut方法接受两个输入参数: 1) 第一个参数为需要分词的字符串 2)cut_all参数用来控制是否采用全模式 jieba.cutforsearch方法接受一个参数:需要分词的字符串,该方法适合用于搜索引擎构...

阿豪boy
2017/09/17
0
0
hanlp和jieba等六大中文分工具的测试对比

本篇文章测试的哈工大LTP、中科院计算所NLPIR、清华大学THULAC和jieba、FoolNLTK、HanLP这六大中文分词工具是由 水...琥珀 完成的。相关测试的文章之前也看到过一些,但本篇阐述的可以说是比...

左手的倒影
02/25
0
0
nltk-比较中文文档相似度-完整实例

nltk同时也能处理中文的场景,只要做如下改动: 使用中文分词器(如我选用了结巴分词) 对中文字符做编码处理,使用unicode编码方式 python的源码编码统一声明为 gbk 使用支持中文的语料库 代码...

深蓝苹果
2014/09/17
0
9
结巴分词在Android手机上的应用:原理、接入和启动优化

中文分词功能是一项常用的基础功能,有很多开源的工程实现,目前能应用于Android手机端的中文分词器没有很完善的版本。经过调研,我选择了结巴分词,该开源工程思路简单,易于理解,分词效果...

JackMeGo
2018/11/20
0
0
elasticsearch教程--中文分词器作用和使用

目录 概述 环境准备 认识中文分词器 常用的中文分词器 IK Analyzer hanlp中文分词器 彩蛋 概述 上一篇博文记录了elasticsearch插件安装和管理, 在地大物博的祖国使用es,不得不考虑中文分词器...

java_龙
2018/11/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
今天
4
0
Kernel DMA

为什么会有DMA(直接内存访问)?我们知道通常情况下,内存数据跟外设之间的通信是通过cpu来传递的。cpu运行io指令将数据从内存拷贝到外设的io端口,或者从外设的io端口拷贝到内存。由于外设...

yepanl
今天
6
0
hive

一、hive的定义: Hive是一个SQL解析引擎,将SQL语句转译成MR Job,然后再在Hadoop平台上运行,达到快速开发的目的 Hive中的表是纯逻辑表,就只是表的定义,即表的元数据。本质就是Hadoop的目...

霉男纸
今天
3
0
二、Spring Cloud—Eureka(Greenwich.SR1)

注:本系列文章所用工具及版本如下:开发工具(IDEA 2018.3.5),Spring Boot(2.1.3.RELEASE),Spring Cloud(Greenwich.SR1),Maven(3.6.0),JDK(1.8) Eureka: Eureka是Netflix开发...

倪伟伟
昨天
13
0
eclipse常用插件

amaterasUML https://takezoe.github.io/amateras-update-site/ https://github.com/takezoe/amateras-modeler modelGoon https://www.cnblogs.com/aademeng/articles/6890266.html......

大头鬼_yc
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部