手记实用系列文章:

代码封装类:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import jieba

import os

import re

import time

from jpype import *

'''

title:利用结巴分词进行文本语料的批量处理

1 首先对文本进行遍历查找

2 创建原始文本的保存结构

3 对原文本进行结巴分词和停用词处理

4 对预处理结果进行标准化格式,并保存原文件结构路径

author:白宁超

myblog:http://www.cnblogs.com/baiboy/

time:2017年4月28日10:03:09

'''

'''

创建文件目录

path:根目录下创建子目录

'''

def mkdir(path):

# 判断路径是否存在

isExists=os.path.exists(path)

# 判断结果

if not isExists:

os.makedirs(path)

print(path+' 创建成功')

return True

else:

pass

print('-->请稍后,文本正在预处理中...')

'''

结巴分词工具进行中文分词处理:

read_folder_path:待处理的原始语料根路径

write_folder_path 中文分词经数据清洗后的语料

'''

def CHSegment(read_folder_path,write_folder_path):

stopwords ={}.fromkeys([line.strip() for line in open('../Database/stopwords/CH_stopWords.txt','r',encoding='utf-8')]) # 停用词表

# 获取待处理根目录下的所有类别

folder_list = os.listdir(read_folder_path)

# 类间循环

# print(folder_list)

for folder in folder_list:

#某类下的路径

new_folder_path = os.path.join(read_folder_path, folder)

# 创建一致的保存文件路径

mkdir(write_folder_path+folder)

#某类下的保存路径

save_folder_path = os.path.join(write_folder_path, folder)

#某类下的全部文件集

# 类内循环

files = os.listdir(new_folder_path)

j = 1

for file in files:

if j > len(files):

break

# 读取原始语料

raw = open(os.path.join(new_folder_path, file),'r',encoding='utf-8').read()

# 只保留汉字

# raw1 = re.sub("[A-Za-z0-9\[\`\~\!\@\#\$\^\&\*\(\)\=\|\{\}\'\:\;\'\,\[\]\.\\/\?\~\!\@\#\\\&\*\%]", "", raw)

# jieba分词

wordslist = jieba.cut(raw, cut_all=False) # 精确模式

# 停用词处理

cutwordlist=''

for word in wordslist:

if word not in stopwords and word=="\n":

cutwordlist+="\n" # 保持原有文本换行格式

elif len(word)>1 :

cutwordlist+=word+"/" #去除空格

#保存清洗后的数据

with open(os.path.join(save_folder_path,file),'w',encoding='utf-8') as f:

f.write(cutwordlist)

j += 1

'''

结巴分词工具进行中文分词处理:

read_folder_path:待处理的原始语料根路径

write_folder_path 中文分词经数据清洗后的语料

'''

def HanLPSeg(read_folder_path,write_folder_path):

startJVM(getDefaultJVMPath(), "-Djava.class.path=C:\hanlp\hanlp-1.3.2.jar;C:\hanlp", "-Xms1g", "-Xmx1g") # 启动JVM,Linux需替换分号;为冒号:

stopwords ={}.fromkeys([line.strip() for line in open('../Database/stopwords/CH_stopWords.txt','r',encoding='utf-8')]) # 停用词表

# 获取待处理根目录下的所有类别

folder_list = os.listdir(read_folder_path)

# 类间循环

# print(folder_list)

for folder in folder_list:

#某类下的路径

new_folder_path = os.path.join(read_folder_path, folder)

# 创建一致的保存文件路径

mkdir(write_folder_path+folder)

#某类下的保存路径

save_folder_path = os.path.join(write_folder_path, folder)

#某类下的全部文件集

# 类内循环

files = os.listdir(new_folder_path)

j = 1

for file in files:

if j > len(files):

break

# 读取原始语料

raw = open(os.path.join(new_folder_path, file),'r',encoding='utf-8').read()

# HanLP分词

HanLP = JClass('com.hankcs.hanlp.HanLP')

wordslist = HanLP.segment(raw)

#保存清洗后的数据

wordslist1=str(wordslist).split(",")

# print(wordslist1[1:len(wordslist1)-1])

flagresult=""

# 去除标签

for v in wordslist1[1:len(wordslist1)-1]:

if "/" in v:

slope=v.index("/")

letter=v[1:slope]

if len(letter)>0 and '\n\u3000\u3000' in letter:

flagresult+="\n"

else:flagresult+=letter +"/" #去除空格

# print(flagresult)

with open(os.path.join(save_folder_path,file),'w',encoding='utf-8') as f:

f.write(flagresult.replace(' /',''))

j += 1

shutdownJVM()

if __name__ == '__main__' :

print('开始进行文本分词操作:\n')

t1 = time.time()

dealpath="../Database/SogouC/FileTest/"

savepath="../Database/SogouCCut/FileTest/"

# 待分词的语料类别集根目录

read_folder_path = '../Database/SogouC/FileNews/'

write_folder_path = '../Database/SogouCCut/'

#jieba中文分词

CHSegment(read_folder_path,write_folder_path) #300个txtq其中结巴分词使用3.31秒

HanLPSeg(read_folder_path,write_folder_path) #300个txt其中hanlp分词使用1.83秒

t2 = time.time()

print('完成中文文本切分: '+str(t2-t1)+"秒。")

运行效果:

ik 和hanlp_结巴分词和自然语言处理HanLP处理手记相关推荐

  1. 结巴分词和自然语言处理HanLP处理手记

    手记实用系列文章: 1 结巴分词和自然语言处理HanLP处理手记 2 Python中文语料批量预处理手记 3 自然语言处理手记 4 Python中调用自然语言处理工具HanLP手记 5 Python中 ...

  2. python结巴分词去掉停用词、标点符号、虚词_NLP自然语言处理入门-- 文本预处理Pre-processing...

    引言 自然语言处理NLP(nature language processing),顾名思义,就是使用计算机对语言文字进行处理的相关技术以及应用.在对文本做数据分析时,我们一大半的时间都会花在文本预处理 ...

  3. jieba结巴分词--关键词抽取_结巴中文分词原理分析2

    作者:白宁超,工学硕士,现工作于四川省计算机研究院,著有<自然语言处理理论与实战>一书,作者公众号:机器学习和自然语言处理(公众号ID:datathinks) 结巴分词详解1中文分词介绍 ...

  4. 结巴分词优点_中文分词概述及结巴分词原理

    词是中文表达语义的最小单位,中文分词是中文文本处理的一个基础步骤,分词的结果对中文信息处理至为关键. 本文先对中文分词方法进行概述,然后简单介绍结巴分词背后的原理. 1. 中文分词概述 中文分词根据实 ...

  5. 结巴分词关键词相似度_jieba+gensim 实现相似度

    相似度 自然语言处理(NLP) : 大概意思就是 让计算机明白一句话要表达的意思,NLP就相当于计算机在思考你说的话,让计算机知道"你是谁","你叫啥",&qu ...

  6. 结巴分词python安装_“结巴”分词:做最好的Python分词组件

    python 结巴分词学习 https://www.toutiao.com/a6643201326710784520/ 2019-01-06 10:14:00 结巴分词(自然语言处理之中文分词器) j ...

  7. mysql使用结巴语句_结巴分词 java 高性能实现,是 huaban jieba 速度的 2倍

    Segment Segment 是基于结巴分词词库实现的更加灵活,高性能的 java 分词实现. 创作目的 分词是做 NLP 相关工作,非常基础的一项功能. jieba-analysis 作为一款非常 ...

  8. 学习笔记(2)Python——结巴分词

    结巴分词模块的简单应用 张华平NShort中文分词算法是目前大规模中文分词的主流算法,下面将介绍以其为核心的结巴分词算法.该模块在Python中使用机及其简单.不需要及其繁琐的安装步骤. 结巴分词支持 ...

  9. 对Python中文分词模块结巴分词算法过程的理解和分析

    结巴分词是国内程序员用python开发的一个中文分词模块, 源码已托管在github, 地址在: https://github.com/fxsjy/jieba 作者的文档写的不是很全, 只写了怎么用, ...

最新文章

  1. 【C++】何时需要自定义拷贝构造函数和赋值符
  2. Spring bean 之 FactoryBean
  3. HTML5游戏开发pdf
  4. 万字长文 | 新零售的五重境界
  5. 轻量级HTTP服务器Nginx(Nginx日常维护)
  6. shell基础05 处理用户输入
  7. 循环数组最大字段和(51Nod-1050)
  8. selenium WebDriverWait类等待机制的实现
  9. 科技最前沿!Adobe提出自动生成高质量合成图像新方法
  10. 医保要交多少年可以享受终身?医保断交2年有什么影响?
  11. ubuntu 安装gcc
  12. RT struct 文件 保存为nii文件及解析
  13. mysql视图代码_mysql创建视图的实例代码
  14. linux不可用于文件名的符号,Linux 文件名中包含特殊字符
  15. 接入百家号流量的方法
  16. php 验证手机号邮箱,PHP正则验证真实姓名、手机号码、邮箱
  17. 给我5分钟,手把手带你学会定时任务!
  18. React.js 学习
  19. 网络工程师能干到多大?网络工程师是不是青春饭?
  20. CSS隐藏多余文字的几个方法

热门文章

  1. ObjectAnimation
  2. SPI Flash为何需要24位地址线?
  3. 微信小程序解析富文本的方法
  4. 鸿蒙上线发布会,华为6月2日线上新品发布会开启-鸿蒙系统正式上线
  5. 清明三天放假归来 jquery的使用
  6. 中国电信校招笔试java_中国电信校园招聘笔试考什么?
  7. OpenCV 3计算机视觉 python语言实现笔记(七)
  8. VScode 出现Timed out waiting for launcher to connet 报错如何解决
  9. 【电路设计】AD原理图库导入3D模型
  10. Java 算法 删除多余括号