7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/cseg.rb', line 7
def self.segment(str, mode="sp")
@result=Array.new
case mode
when "sp"
@modle=@modle_sp
when "tr"
@modle=@modle_tr
else
raise "no such parameter, please use sp or tr"
end
result_data = IO.popen "crf_test -m #{@modle}", 'r+' do |io|
io.puts *str.chars
io.close_write
io.read
end
word=""
result_data.each_line{|line|
token=line.chomp.split(" ")
if token[1]=="B"or token[1]=="O"
if word!=""
@result.push(word)
end
word=token[0]
elsif token[1]=="I"
word+=token[0]
else
if word!=""
@result.push(word)
word=""
end
end
}
return @result
end
|