Class: Igo::Tagger

Inherits:
Object
  • Object
show all
Defined in:
lib/igo/tagger.rb

Overview

形態素解析を行うクラス

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dir) ⇒ Tagger

dir

辞書ファイルのディレクトリパス



33
34
35
36
37
# File 'lib/igo/tagger.rb', line 33

def initialize(dir)
  @wdc = WordDic.new(dir)
  @unk = Unknown.new(dir)
  @mtx = Matrix.new(dir)
end

Class Method Details

.__BOS_NODESObject



28
29
30
# File 'lib/igo/tagger.rb', line 28

def self.__BOS_NODES
  return [ViterbiNode.make_BOSEOS]
end

Instance Method Details

#parse(text, result = []) ⇒ Object

形態素解析を行う

text

解析対象テキスト

result

解析結果の形態素が追加される配列

return

解析結果の形態素配列



43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/igo/tagger.rb', line 43

def parse(text, result=[])
  vn = impl(text, result)
  txt = text.unpack("U*")
  while vn
    surface = txt.slice(vn.start, vn.length).pack("U*")
  
    s = @wdc.word_data(vn.word_id)
  
    feature = NKF.nkf('-W16L0 --utf8', s)
    result.push(Morpheme.new(surface, feature, vn.start))
    vn = vn.prev
  end
  return result
end

#wakati(text, result = []) ⇒ Object

分かち書きを行う

text

分かち書きされるテキスト

result

分かち書き結果の文字列が追加される配列

return

分かち書き結果の文字列の配列



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/igo/tagger.rb', line 62

def wakati(text, result=[])
  vn = impl(text, result)
  txt = text.unpack("U*")

  while vn
    a = txt.slice(vn.start, vn.length).pack("U*")
    result.push(a)
    vn = vn.prev
  end
  return result
end