5

Oracle テキストを使用して文のコーパスを検索しています

例: 私のクエリは ( dog cat table ) 、「犬」という用語が見つかった場合、文に「犬」という用語が複数含まれていても、1 とカウントする必要があります。「dog cat」が見つかった場合は、2 とカウントする必要があります ... など

このクエリを使用しましたが、2 つの用語が見つかった場合は 51 になります。個別のオカレンスを蓄積する必要があります。そこで、Oracle Text のスコアリング アルゴリズムの動作をオーバーライドしたいと考えています。

   select /*+ FIRST_ROWS(1)*/ sentence_id
           ,score(1) as sc
           , isn 
           ,sentence_length 
   from       plag_docsentences 
   where contains(PROCESSED_TEXT,'DEFINESCORE(dog, DISCRETE*.01)
                                ,DEFINESCORE(cat, DISCRETE*.01)'
                    ,1)>0 
order by score(1) desc
4

1 に答える 1

1

OK、私はその問題を解決しました。

3 つのうち 2 つの用語を見つけたとします。スコアは 67 になります。これは、(2/3=67) これが oracle テキスト スコアリング alg のデフォルトの動作であることを意味します。そこで、次のように、出現数 (つまり、コーパス文で見つかったクエリ内の用語の数) を見つける式を導き出しました。

x/クエリの長​​さ = スコア/100

それから

x=クエリの長​​さ * スコア/100

これは、クエリとコーパスクエリの間で一致する単語の数を見つけます

これが IR の研究者に役立つことを願っています。

于 2014-12-07T09:42:23.273 に答える