こんな感じになっている辞書から
zygoma (解剖)頬骨 zygomatic 頬骨の zygomycete (生物)接合菌 zygomycosis (病名)接合菌症 zygote 接合体, 接合子 zygote nuclei (解剖)《複》接合体核 zygote nucleus (解剖)接合体核 zygotene 合糸期, ザイゴテン期 zygotene stage 合糸期, ザイゴテン期 zygotic 接合子の, 接合体の zygotic effect 接合体効果 zymogen 酵素前駆体, 酵素原, チモーゲン zymogram 酵素電気泳動像, ザイモグラム zymograph 酵素電気泳動, ザイモグラフ zymographic 酵素電気泳動の, 酵素電気泳動法の, ザイモグラフの zymography 酵素電気泳動法, ザイモグラフィ
日本語のやつを使える形で加工するRubyスクリプト。
# -*- coding: utf-8 -*- f = File.open("/Users/yasuhisa/Desktop/lsd/Lsd4-EJ.txt","r") words = [] f.each{|line| str = line.split(/\t/)[1] if str =~ /(.*?)/ str.gsub!(/(.*?)/){} end if str =~ /《.*?》/ str.gsub!(/《.*?》/){} end str.split(/, /).each{|item| words.push item } } f.close words.each{|item| puts item }
ファイルに結果を送って
/tmp% ruby split.rb > ~/Desktop/lsd.txt
MeCabの辞書には登録されていないけど、こっちの辞書では持っている、というものの量がどれくらいあるのかを見てみる。
> d <- scan("~/Desktop/lsd.txt",what="character") Read 50847 items > sum(sapply(d,function(x){ + length(RMeCabC(x)) == 1 + })) / length(d) * 100 [1] 28.83356
約3割くらいは突っこんで意味がありそうな感じだなーということが分かった。
追記
辞書側に「地衣地衣類苔癬苔癬状の」というような*1形容詞がかなり含まれているっぽいので、「〜の」というような形容詞を取り除くことにした。日本語を一文字として扱うのにKCODEがいるということを思い出すのに時間がかかった。。。
# -*- coding: utf-8 -*- $KCODE = "UTF-8" f = File.open("/Users/yasuhisa/Desktop/lsd/Lsd4-EJ.txt","r") words = [] f.each{|line| str = line.split(/\t/)[1] if str =~ /(.*?)/ str.gsub!(/(.*?)/){} end if str =~ /《.*?》/ str.gsub!(/《.*?》/){} end str.split(/, /).each{|item| words.push item } } f.close words.each{|item| if item.chomp.split("").pop == "の" words.delete(item) end } words.each{|item| print item }
これをやった上で、MeCabのと比較すると
> d <- scan("~/Desktop/lsd.txt",what="character") Read 33080 items > sum(sapply(d,function(x){ + length(RMeCabC(x)) == 1 + })) / length(d) * 100 [1] 23.53386
5%くらい下がった。あとは「〜する」とかいうような動詞もあったりするんだけど、とりあえずあとはこれの応用か。
*1:なんて読むのかは分からないけど