Sha256: 7bc05531a551abc21b2ff3065b9eadaed04fd6c72efffa1cee2b9924914fa021

Contents?: true

Size: 1.92 KB

Versions: 1

Compression:

Stored size: 1.92 KB

Contents

require "natto"

module SuriLang
  class Translator
    DICTIONARY = {
      'です,助動詞': 'デス',
      'ます,助動詞': 'マス',
      'まし,助動詞': 'マシ',
      'ませ,助動詞': 'マセ',
      'くれ,動詞': 'クレ',
      'ください,動詞': 'くだサイ',
      '予め,副詞': 'あらかじめ',
      '併せ,動詞': 'あわせ',
      '下さい,動詞': 'くだサイ',
      '言う,動詞': 'いう',
      '致し,動詞': 'いたし',
      '頂く,動詞': 'いただく',
      '一旦,副詞': 'いったん',
      '及び,接続詞': 'および',
      '事,名詞': 'こと',
      '毎,名詞': 'ごと',
      '更に,副詞': 'さらに',
      '既に,副詞': 'すでに',
      '全て,名詞': 'すべて',
      '是非,副詞': 'ぜひ',
      '沢山,副詞': 'たくさん',
      '側,名詞': 'そば',
      '但し,接続詞': 'ただし',
      '為,名詞': 'ため',
      '出来る,動詞': 'できる',
      '通り,名詞': 'とおり',
      '時,名詞': 'とき',
      '伴い,動詞': 'ともない',
      '共に,副詞': 'ともに',
      '尚,接続詞': 'なお',
      '等,名詞': 'など',
      '他,名詞': 'ほか',
      '殆ど,副詞': 'ほとんど',
      '又,副詞': 'また',
      '又は,接続詞': 'または',
      '良い,形容詞': 'よい',
      '全く,副詞': 'まったく',
      '迄,助詞': 'まで',
    }

    def self.wakati(text)
      nm = Natto::MeCab.new('-Owakati')
      nm.enum_parse(text).select{|n| !n.is_eos?}.map(&:surface)
    end

    def self.translate(text)
      nm = Natto::MeCab.new('-F%m,%f[0]')
      features = nm.enum_parse(text).select{|n| !n.is_eos?}.map{|n| n.feature.split(',')}
      words = features.map{|feature| to_suri_word(feature[0], feature[1])}
      words.join
    end

    private

    def self.to_suri_word(word, word_class)
      DICTIONARY["#{word},#{word_class}".to_sym] || word
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
suri_lang-0.1.3 lib/suri_lang/translator.rb