我试图理解snoball词干算法。算法使用两个区域R1和R2,其定义如下:
R1是元音后第一个非元音之后的区域,或者是 如果没有这样的非元音,则在单词末尾的空区域。
R2是R1中元音后第一个非元音之后的区域,或 如果没有这样的话,则是单词末尾的空区域 非元音。
例子是
b e a u t i f u l
|<------------->| R1
|<----->| R2
b e a u t y
|<->| R1
->|<- R2
a n i m a d v e r s i o n
|<----------------------------------------->| R1
|<--------------------------------->| R2
s p r i n k l e d
|<------------->| R1
->|<- R2
e u c h a r i s t
|<--------------------->| R1
|<--------->| R2
我的问题是,为什么&#34; kled&#34;在春天和#34; harist&#34;在圣餐中定义为R1?我认为正确的结果将是&#34;墨水&#34;和&#34; arist&#34;?
答案 0 :(得分:1)
你应该再次阅读这个定义,它说:
R1是第一个非元音 跟随 元音之后的区域。
不是: 后跟 一个元音。
在for file in test.*.csv ; do
time=${file#test.} # Remove "test" on the left.
time=${time%.csv} # Remove ".csv" on the right.
time=${time:0:4}-${time:4:2}-${time:6:2}' '${time:8:2}:${time:10:2}
sed "s/^/$time,/" "$file" # Append time to each line of the file.
rm "$file" # This removes the original file. Have you made a backup?
done > one-file.csv
中,元音后面的第一个非元音是sprinkled
,因此后面的区域为n
。
对于kled
来说,元音后面的第一个非元音是eucharist
,所以后面的区域是c
。