如何用python和jieba分词,统计词频?

如何用python和jieba分词,统计词频?,第1张

 #! python3

# -*- coding: utf-8 -*-

import os, codecs

import jieba

from collections import Counter

 

def get_words(txt):

    seg_list = jieba.cut(txt)

    c = Counter()

    铅衫让for x in seg_list:

        if len(x)>1 and x != '塌镇\r\n':

            c[x] += 1

    print('常用词频度统计结果')

    for (k,v) in c.most_common(100):

 槐局       print('%s%s %s  %d' % ('  '*(5-len(k)), k, '*'*int(v/3), v))

 

if __name__ == '__main__':

    with codecs.open('19d.txt', 'r', 'utf8') as f:

        txt = f.read()

    get_words(txt)

1.其实你这个功能用lucene加IK Analyer分词器很好解决。

把文档读入,然后用lucene创建索引,在索引里你的每个单词都会被分出来,词频就是命中次数totalHits,然后读取索引,放进map就行。这只是一个大体思路。

2.如果不用lucene,就用正则表达式匹配英文单词之间的空格,把空格去掉放进map的key,同时设置value=1。这样你的每个英文单词(有连明链词符激贺孙号的如I'm根据你的需求另考虑)就都放进了map的拍竖key,且value都等于1。当然这些key值是有重复的,所以就要开始遍历比较key值,用几个嵌套循环把后面元素的key值与前面元素的key值比较,如果有相同的则把该元素remove,前面元素的value+1。考虑到map没有index可能遍历起来不容易实现比较,你也可以在匹配的时候把单词存进一个list,然后再新建一个同样长度的list用来存放词频(初值设为1),然后再按上面的思路来 *** 作。也是大体思路,希望对你有所帮助


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12218158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存