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])
完整代码
# 加载自定义词典 jieba.load_userdict("newdic.txt") text = "故宫的著名景点包括乾清宫、太和殿和午门等。其中乾清宫非常很精美了,午门是紫禁城的正门,午门居中向阳" # 数据清洗 # 正则表达式取中文字符 pattern = re.compile(r'[\u4e00-\u9fa5]+') filter_data = re.findall(pattern, text) text = ''.join(filter_data) print(text) # 获取关键词 # tags = jieba.analyse.extract_tags(text, topK=3) # jieba.lcut 生成List tags = jieba.lcut(text) tags_df = pd.DataFrame({'segment': tags}) # 去除停用词 stopword = pd.read_csv("stopwords.txt", header=None, names=['words'], encoding='utf-8') tags_df = tags_df[~tags_df['segment'].isin(stopword.words)] # tags_df.index = print(tags_df) # 词频计数 word_count = tags_df.groupby('segment')['segment'].count().sort_values(ascending=False) print(word_count[:5])
文章来源: jieba分词 简单实现步骤