我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

前面的文章里面提到:结巴分词基于TF-IDF算法来提取标签。其中的TF就是词频,算法上就是统计出目标词出现的次数,然后再除以一个文章的词儿总数(或者其它的数)。TF要求:目标词在当前文章里面出现的次数多,词频就越高。IDF的意思就是:目标词在其它的文档里面,出现的次数低。

苏南大叔:python代码,如何手工统计一篇文章的词频Top5分词? - 手工词频统计
python代码,如何手工统计一篇文章的词频Top5分词?(图4-1)

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文描述手工统计一篇文章的词频,或者说手工获得一篇文章的TOP5关键词。测试环境:win10python@3.6.8

前文回顾

这里先回顾一下词频统计相关的几篇文章:

上面每篇文章,都涉及了一个词频统计的方法,在本文中手工来统计一次词频。本文要统计的文字是上面的第三篇文章。先做点准备工作:

第一步,把下面的文字正文,复制出来保存为content.txt

第二步,下载下面的停用词列表,保存为stop_words.txt,然后稍作修改。

苏南大叔:python代码,如何手工统计一篇文章的词频Top5分词? - nlp目录结构
python代码,如何手工统计一篇文章的词频Top5分词?(图4-2)

读取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")

苏南大叔:python代码,如何手工统计一篇文章的词频Top5分词? - 代码一
python代码,如何手工统计一篇文章的词频Top5分词?(图4-3)

分词并过滤停用词

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)

苏南大叔:python代码,如何手工统计一篇文章的词频Top5分词? - 代码二
python代码,如何手工统计一篇文章的词频Top5分词?(图4-4)

最终调用

print('文章分词:' + '/'.join(words))
print('词频统计:' + top5 )

调用结果:

文章分词:python/代码/中/做/词频/统计/做/中文/词频/统计/哪些地方/做/设置...
词频统计:[('文档', 15), ('统计', 14), ('分词', 14), ('苏南大叔', 12), ('词', 12)]

相关文章

总结

更多nlp自然语言处理文章,请参考:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python    nlp