5

我正在使用 Oracle 文本在句子语料库中搜索我希望评分仅计算离散出现的次数,

示例:我的查询是 ( dog cat table ) 如果它找到术语“狗”,即使该句子有多个“狗”术语,它也必须计为 1。如果它找到“狗猫”它必须数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

好的,我解决了这个问题。

假设我在 3 个术语中找到 2 个,分数将为 67,这意味着( 2/3=67 )这是 oracle 文本评分算法的默认行为。所以我推导出一个方程来找到出现次数(即在语料库中找到的查询中的术语数)如下:

x/query_lenght = 分数/100

然后

x=query_length * 分数/100

这将找到查询和语料库查询之间的匹配词数

我希望这将有助于 IR 的研究人员。

于 2014-12-07T09:42:23.273 回答