python代码,如何手工统计一篇文章的词频Top5分词?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
前面的文章里面提到:结巴分词基于TF-IDF
算法来提取标签。其中的TF
就是词频,算法上就是统计出目标词出现的次数,然后再除以一个文章的词儿总数(或者其它的数)。TF
要求:目标词在当前文章里面出现的次数多,词频就越高。IDF
的意思就是:目标词在其它的文档里面,出现的次数低。
大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文描述手工统计一篇文章的词频,或者说手工获得一篇文章的TOP5关键词。测试环境:win10
,python@3.6.8
。
前文回顾
这里先回顾一下词频统计相关的几篇文章:
- 《基于TF-IDF算法提取文章关键词》 https://newsn.net/say/jieba-analyse-extract_tags.html
- 《基于TextRank算法提取文章关键词》 https://newsn.net/say/jieba-analyse-textrank.html
- 《利用CountVectorizer来做词频统计》 https://newsn.net/say/python-count-vectorizer.html
上面每篇文章,都涉及了一个词频统计的方法,在本文中手工来统计一次词频。本文要统计的文字是上面的第三篇文章。先做点准备工作:
第一步,把下面的文字正文,复制出来保存为content.txt
。
第二步,下载下面的停用词列表,保存为stop_words.txt
,然后稍作修改。
读取content.txt
def getContent(path):
with open(path, encoding='utf-8', errors='ignore') as f:
content = ''
for line in f:
content += line.strip()
return content
content = getContent("content.txt")
读取stop_words.txt
def getStopWords(path):
ret = [] # https://github.com/yinzm/ChineseStopWords
with open(path, encoding='utf-8') as f:
ret = [l.strip() for l in f]
ret = ret + ["https","newsn","net","print","cv","fit","PythonCopy","dog","cat"]
# ret.append("https")
return ret
stop_words = getStopWords("stop_words.txt")
分词并过滤停用词
import jieba
def cut(content,stop_words):
jieba.add_word("苏南大叔")
_words = [x for x in jieba.cut(content) if x.strip() != "" and x not in stop_words]
return _words
words = cut(content,stop_words)
这个地方的这个分词结果过滤的语句写的很精简,是吧?
_words = [x for x in jieba.cut(content) if x.strip() != "" and x not in stop_words]
分词统计
def get_TF(words, topK=10):
tf_dic = {}
for w in words:
tf_dic[w] = tf_dic.get(w, 0) + 1
top = sorted(tf_dic.items(), key=lambda x: x[1], reverse=True)[:topK] #list
return str(top)
top5 = get_TF(words,5)
最终调用
print('文章分词:' + '/'.join(words))
print('词频统计:' + top5 )
调用结果:
文章分词:python/代码/中/做/词频/统计/做/中文/词频/统计/哪些地方/做/设置...
词频统计:[('文档', 15), ('统计', 14), ('分词', 14), ('苏南大叔', 12), ('词', 12)]
相关文章
- https://newsn.net/say/jieba-analyse-extract_tags.html
- https://newsn.net/say/jieba-analyse-textrank.html
- https://newsn.net/say/python-count-vectorizer.html
总结
更多nlp
自然语言处理文章,请参考:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。