【python】用python和mecab实现对日语试卷进行词频统计

前言

网上有很多对英文和中文进行词频统计的程序,其中,英语用空格和标点进行分词,比如这篇

https://www.cnblogs.com/coskaka/articles/5965091.html

用程序表达如下:

【python】用python和mecab实现对日语试卷进行词频统计

还有用jieba库进行中文和英文分词分词,如:https://blog.****.net/tanlangqie/article/details/80493888

对于日语分词,网上内容很少。正好自己也在学日语。所以想做个统计日语试卷词频的程序。

工具介绍

python3.6:这个就不用过多介绍了。主要说下开发环境,自己是在Ubuntu系统上写的程序。

mecab: 一款日语的分词器。类似于jieba。详细介绍请看下面链接:

介绍和使用:http://www.52nlp.cn/%E6%97%A5%E6%96%87%E5%88%86%E8%AF%8D%E5%99%A8-mecab-%E6%96%87%E6%A1%A3

这篇链接的文章写的很详细,包含安装和使用。

我自己安装是用这个命令就行了。sudo apt-get install mecab libmecab-dev mecab-ipadic-utf8

hello world版本:

安装完后需要自己用个简易程序验证一下环境是否好用,输入mecab,回车会进入命令行模式,再输入日语文本就出现分词解析了。

【python】用python和mecab实现对日语试卷进行词频统计

或者用下面的程序验证:

import MeCab

mecab = MeCab.Tagger ("-Ochasen")

print(mecab.parse("MeCabを用いて文章を分割してみます。"))

开始统计

创建被统计文本,我是把试卷的文本直接粘贴到txt里面的,如图,test.txt就是下面程序要读取的待统计文本。

【python】用python和mecab实现对日语试卷进行词频统计

上程序

写的有点粗糙,日语中的很多语气词还没有添加到过滤词中,还需要优化。

#author:wangzhensuo
#weixin: 814565668
import time
from mecabwrap import do_mecab
key_list=[]

del_str = '''( )_・)(★」「.1234567890、。がガがガぎギぐグげゲごゴざザざザじジずズぜゼぞゾだダだダぢヂづヅでデどドばバばバびビぶブべベぼボぱパぱパぴピぷプぺペぽポ
あアあアいイうウえエおオかカかカきキくクけケこコさサさサしシすスせセそソたタたタちチつツてテとトなナなナにニぬヌねネのノはハ
はハひヒふフへヘほホまマまマみミむムめメもモやヤやヤゆユよヨらラらラりリるルれレろロわワわワをヲ'''

def words_list():
    file_in = open('test.txt')
    f_line = file_in.read()
    all_lines = do_mecab(f_line, '-Owakati')
#    print(f_line)
 #   print('-------------------------------')
#    print(all_lines)

    return all_lines.split()

word_dict = {}
my_list = words_list()
for item in my_list:
    if item in del_str:
        continue
    if item not in word_dict:
        word_dict[item] = 1
    else:
        word_dict[item] =word_dict[item]+1
#print(word_dict)
#order_list = list(word_dict.values())
#order_list.sort(reverse=True)
#print(order_list)
d_order=sorted(word_dict.items(),key=lambda x:x[1],reverse=True)

#print(d_order)

print("单词总数:",len(d_order))
cnt = 0
for word,fre in d_order:
    cnt+=1
    print(fre//2*'#',word,fre)
ll=""
for word,fre  in d_order:
#    print(word)
    ll+=word+'  '
#print(ll)

运行效果如下:

【python】用python和mecab实现对日语试卷进行词频统计

安装或者使用有问题,请联系微信:814565668 。互相学习,进步。