#!/usr/bin/env ruby # -*- coding: utf-8 -*- ENV['MECAB_PATH']='/usr/lib/x86_64-linux-gnu/libmecab.so' require './kana_Braille.rb' require 'natto' def MecabNatto(str,text,gana,kana,seion,english,alphabet,upper,lower) natto = Natto::MeCab.new natto.parse(text) do |phrase| #pharse=mecabで形態素解析したもの morpheme = phrase.feature.split(',') #pharase.feature=mecabを使用した結果を表示する。「,」で区切られていて「,」ごとに配列化したものがmorphemeに入る if morpheme[0]=="BOS/EOS" #BOSは文頭を表し、EOSは文末を表す。 #morpheme[0]にBOS/EOSが含まれていたら空白を表示するよう指示 str+="" else #辞書内に該当する文字がなければmecabは*を返すためその際の例外処理 if morpheme[-1]=="*" al_str=phrase.surface #phrase.surfaceは元の文字をそのまま返す #アルファベットが含まれているときの条件分岐 start if upper.include?(al_str[0])==true || lower.include?(al_str[0])==true i=0 youshori="#{alphabet["外"][0]}" while i<al_str.length if upper.include?(al_str[i])==true youshori+="#{alphabet[al_str[i]][0]}" youshori+="#{alphabet[al_str[i]][1]}" else lower.include?(al_str[i])==true youshori+="#{alphabet[al_str[i]][0]}" end i+=1 end #アルファベットが含まれているときの条件分岐 end #辞書内に無い文字への対応 else #exit 1 sin="ヨメナイ" #要改善 youshori=contracted(sin,gana) end else youshori=contracted(morpheme[-1],gana) end for chara in youshori.split("") #p chara if chara==(" ") #空白があったら空白を出す str+="" elsif seion.include?(chara)==false && english.include?(chara)==false str+="#{kana[chara][1]}#{kana[chara][0]}" else str+="#{chara}" end end end end str end def sutem(suuu,suji,sufu) j=0 for num in suuu.split("") j+=1 if j==1 suji+="#{sufu}#{num}" else suji+="#{num}" end end suji end