0

完全に並行する必要がある 2 つのルーチンがあります。Snowball にそれらを実行させ、最も一致するものが選択されるようにします。

現在、私はそれらを使用して実行していorます。つまり、最初に実行し、失敗した場合は 2 番目を実行します。

両方のルーチンのテストを実行して、一致の長さを取得し、それを変数に格納してから、それらを比較し、最も一致するルーチンを実行することを考えました。

それを行うための標準的な指示またはより良い解決策はありますか?

擬似コード:

 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
         )
    )
4

1 に答える 1

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は、snowball マニュアルの定義:

テストC

これはコマンド C を実行しますが、c を進めません。その信号は C の信号と同じですが、信号 t の後、c は元の値に戻されます。

于 2016-01-10T07:32:03.400 に答える