两场比赛之间如何让雪球变得贪婪?

时间:2016-01-10 00:04:00

标签: stemming snowball

我有两个完全平行的例程。我希望Snowball执行它们并选择具有最长匹配的那个。

目前,我使用or运行它们。这意味着执行第一个,如果失败则执行第二个。

我想为两个例程执行测试得到匹配的长度,将其存储在变量中,然后比较它们并执行具有最长匹配的例程。

是否有标准指令要做或更好的解决方案?

伪代码:

 Verb_Suffixes 
 or 
 Noun_Suffixes

真实代码

    //Suffixes for verbs
  ( 
   is_verb
   (
       (
          (atleast 1 Suffix_Verb_Step1) 
          ( Suffix_Verb_Step2a or Suffix_Verb_Step2c  or next)
        )
        or Suffix_Verb_Step2b
        or Suffix_Verb_Step2a
    )
   )
    //Suffixes for nouns 
    or (
       is_noun
        ( 

         try ( 
             Suffix_Noun_Step2c2
             or (not is_defined Suffix_Noun_Step1a ( 
                    Suffix_Noun_Step2a 
                    or Suffix_Noun_Step2b 
                    or Suffix_Noun_Step2c1 
                    or next))
             or (Suffix_Noun_Step1b ( 
                    Suffix_Noun_Step2a 
                    or Suffix_Noun_Step2b 
                    or Suffix_Noun_Step2c1))
             or (not is_defined Suffix_Noun_Step2a)
             or (Suffix_Noun_Step2b)
         )
         Suffix_Noun_Step3
         )
    )

1 个答案:

答案 0 :(得分:0)

没有标准的指令,但可以通过在每个例程之后获取光标值来完成,而不是比较它们并返回它应该的位置:

$c = 0 
do test (Verb_Suffixes  $c = cursor)
do test (Noun_Suffixes ($c < cursor $c = cursor))
tomark c

($c < cursor $c = cursor)表示if ($c < cursor) $c = cursor

对于test,来自雪球手册的定义:

  

测试C

     

这确实命令C但没有推进c。其信号与C的信号相同,但在信号t之后,c被回退   它的旧价值。