【简单总结】jieba分词

【简单总结】jieba分词回顾与总结

一、安装方法

  1. 自动安装 pip install jieba
  2. 半自动安装:下载 http://pypi.python.org/pypi/jieba,解压后运行 python setup.py install
  3. 手动安装:将jieba目录放置于当前目录或sit-packages目录下

二、jieba分词简单介绍

一、支持三种分词模式与特点:

  1. 精准模式:试图将句子最精确地切分开,适合文本分析
  2. 全模式:把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义
  3. 搜索引擎模式:在精确模式的基础上,对长词可以再次切分,提高召回率,适合用于搜索引擎分词
import jieba
 
s = u'jieba(结巴)是一个强大的分词库,完美支持中文分词 '
cut = jieba.cut(s)
 
#三种模式
print( '【Output】精确模式:')
print (cut)
print ('/'.join(cut))
 
print( '【Output】全模式:')
print ('/'.join(jieba.cut(s,cut_all = True)))
 
print( '【Output】搜索引擎模式:')
print('/'.join(jieba.cut_for_search(s)))

 二、jieba分词在处理中文文本分析是比较常用的工具,这里主要是基于自学后得到的实现文本jieba分词的常用流程:

加载自定义词典——>获取关键词——>去除停用词——>数据处理

1、加载自定义词典
jieba分词自带词典,可能不能包括一些专业词汇,会造成分词结果不准确,可以通过自定义词典解决这一问题。

# 加载自定义词典
jieba.load_userdict("newdic.txt")

其中“newdic.txt”是自定义词典的路径。其中自定义词典的格式:一个词占一行;每一行分三部分,一部分为词语,另一部分为词频(可省略),最后为词性(可省略),用空格隔开。

2、获取关键词
主要借助jieba.cut()和jieba.lcut()两个函数完成,两个函数生成的对象不同,要注意后续操作。

# jieba.cut 生成generator
# 全模式分词
seg_list = jieba.cut("我来北京上学", cut_all=True)
print("Full Model " + '/'.join(seg_list))

# 精确模式 (默认)
seg_list = jieba.cut("我来北京上学", cut_all=False)

# jieba.lcut 生成List
tags = jieba.lcut(text)
tags_df = pd.DataFrame({'segment': tags})

3、去除停用词
去除停用词后可以更精准的进行文本分析,停用词表可以借鉴网上的中文停用词词表。首先要加载本地停用词表,然后针对不同的对象采用特定的方法进行停用词去除。

# 去除停用词
stopword = pd.read_csv("stopwords.txt", header=None, names=['words'], encoding='utf-8')
tags_df = tags_df[~tags_df['segment'].isin(stopword.words)]
print(tags_df)

4、数据处理
文本一般进行停用词去除后就可以进行后续处理,jieba分词处理文本后,所得到的关键词是会存在重复的情况,这里通过计算关键词词频进行文本的数据处理,可以得到出现次数较多的关键词。

# 词频计数
word_count = tags_df.groupby('segment')['segment'].count().sort_values(ascending=False)
print(word_count[:5])

三、应用实例:

1.词性标注:

import jieba.posseg as pseg  
test_sent = "jieba分词在处理中文文本分析是比较常用的工具,这里主要是基于自学后得到的实现文本jieba分词的常用流程:"  
test_sent += "jieba分词在处理中文文本分析是比较常用的工具,这里主要是基于自学后得到的实现文本jieba分词的常用流程:"  
result = pseg.cut(test_sent)  
for w in result:  
    print(w.word, "/", w.flag, ", ",)  
print("\n========")    

2.关键词提取

import sys  
sys.path.append('../')  
import jieba  
import jieba.analyse  
from optparse import OptionParser  
USAGE = "usage: python extract_tags.py [file name] -k [top k]"  
parser = OptionParser(USAGE)  
parser.add_option("-k", dest="topK")  
opt, args = parser.parse_args()  
#'''
if len(args) < 1:  
    print(USAGE)  
    sys.exit(1)  
#'''   
file_name = args[0]
#file_name=u"story.txt"  
if opt.topK is None:  
    topK = 10  
else:  
    topK = int(opt.topK)   
content = open(file_name, 'rb').read()  
tags = jieba.analyse.extract_tags(content, topK=topK)  
print(",".join(tags) )

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章