【python 走进NLP】利用jieba技术中文分词并写入txt

简单介绍:

近年来,随着NLP自然语言处理技术的日益成熟,开源实现的分词工具也越来越多,比如NLTK:其在英文分词较为成熟,分词效果较好,在处理中文分词方面则显得力不足;在处理中文分词时,Jieba这一工具普遍为大家所接受,很多企业也都是利用这一工具来处理涉及中文分词的项目;其他的开源分词工具比如Ansj、盘古分词等,感兴趣的小伙伴可以去搜索一下,下面重点介绍Jieba分词工具。

使用Jieba分词工具主要基于以下几点:

  • 1、社区活跃。GitHub上Jieba社区活跃度高,表明该项目会一直得到维护并持续更新,适合长期使用。
  • 2、功能丰富。其不仅可以进行分词处理,还可以进行词性标注,关键词提取等。
  • 3、使用简单。基于Python语言来说,其配置非常简单,方便上手。

Jieba分词工具的安装
作为Python的第三方库,和其他库的安装方式一样,打开cmd命令窗口,执行以下命令,等待一段时间即可完成安装:

pip install jieba

jieba分词支持三种分词模式:

  • 精确模式, 试图将句子最精确地切开,适合文本分析:
  • 全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;
  • 搜索引擎模式,在精确模式的基础上,对长词再词切分,提高召回率,适合用于搜索引擎分词。

jieba学习链接:

https://github.com/fxsjy/jieba

jieba中文分词 代码:

全部文本:

# -*- encoding=utf-8 -*-

import jieba.analyse
import  jieba
import  pandas as pd

# 载入自定义词典
jieba.load_userdict('F:\\标签库\\第一类赛事主体标签.txt')
jieba.load_userdict('F:\\标签库\\第二类网络主体标签.txt')

## 载入自定义停止词
jieba.analyse.set_stop_words('C:\\Users\\xiaohu\\Desktop\\文本挖掘\\赛事主题内容标签\\excel\\stop_words.txt')



#  去掉中英文状态下的逗号、句号

def clearSen(comment):
    comment = comment.strip(' ')
    comment = comment.replace('、','')
    comment = comment.replace('~','。')
    comment = comment.replace('~','')
    comment = comment.replace('…','')
    comment = comment.replace('\r', '')
    comment = comment.replace('\t', ' ')
    comment = comment.replace('\f', ' ')
    comment = comment.replace('/', '')
    comment = comment.replace('、', ' ')
    comment = comment.replace('/', '')
    comment = comment.replace(' ', '')
    comment = comment.replace(' ', '')
    comment = comment.replace('_', '')
    comment = comment.replace('?', ' ')
    comment = comment.replace('?', ' ')
    comment = comment.replace('了', '')
    comment = comment.replace('➕', '')
    comment = comment.replace(':', '')
    return comment





# 读取数据
tl_dongli_comment_content=pd.read_table('F:/下载/content/tl_dongli_reply_content.txt',sep=',')

# 数据重命名
tl_dongli_comment_content.columns=['content']

# 取前5条
# tl_dongli_comment_content=tl_dongli_comment_content.head()

# 文件读写
outputfile = open('F:/下载/content/comment.replay.weibo.txt', 'a+',encoding="utf-8")


for each in tl_dongli_comment_content['content']:
    # 清除标点符号
    kk = clearSen(each)
    # 精确模式切词
    seg_list = jieba.cut(kk)
    comment=" ".join(seg_list)
    print(comment)
    # 写出数据
    outputfile.write(comment + '\n')

# 关闭文件
outputfile.close()

单行文本:

# coding: utf-8


import jieba

text = '''新乡SEO 昊天 seo 168seo.cn 免费分享最新的SEO技术,本站的目的是与同行交流SEO知识,并提供企业网站优化、企业网站诊断等服务,白帽SEO从我做起,专注用户体验研究''
'''

# 搜索引擎模式
seg_list = jieba.cut_for_search(text)

# 对于要处理的文本进行搜索引擎分词处理
data = list(seg_list)

# 分词后 转化成list
stopwords = [line.rstrip() for line in open('stopwords.txt', 'r', encoding="gbk").readlines()]

# 读取停止词,生成list
data = [d for d in data if d not in stopwords]

# 剔除 停止词
c = dict.fromkeys(data, 0)

# 构造构造字典,并且默认值为0
for x in data:
    c[x] += 1

# 统计频次
newc = sorted(c.items(), key=lambda x: x[1], reverse=True)

# 进行高频词排序
print(newc)

你可能感兴趣的:(数据科学--机器学习)