对文本分词并统计高频词,即关键词,是做网络爬虫的基本需求。
使用Python可以实现这一点,这里我们使用jieba
进行分词,并使用collections
进行词频统计。
直接上代码:
import re
import jieba
from collections import Counter
from funcs import *
def chinese_word_cut(mytext):
# 添加jieba库识别不了的网络新词,避免将一些新词拆开
jieba.load_userdict('data/新词.txt')
# 初始化jieba
jieba.initialize()
# 文本预处理 :去除一些无用的字符只提取出中文出来
new_data = re.findall('[\u4e00-\u9fa5]+', mytext, re.S)
new_data = " ".join(new_data)
# 文本分词
seg_list_exact = jieba.lcut(new_data)
result_list = []
# 可根据需要打开停用词库,加上不想显示的词语
with open('data/停用词.txt', encoding='utf-8') as f:
con = f.readlines()
stop_words = set()
for i in con:
i = i.replace("\n", "") # 去掉读取每一行数据的\n
stop_words.add(i)
# 去除停用词并且去除单字
for word in seg_list_exact:
if word not in stop_words and len(word) > 1:
result_list.append(word)
return result_list
content = file_get_contents('data/示例文章.txt')
content_cutted = chinese_word_cut(content)
print(content_cutted)
words_count = Counter(content_cutted)
print(words_count.most_common(6))