terrier-org / pyterrier

A Python framework for performing information retrieval experiments, building on http://terrier.org/
https://pyterrier.readthedocs.io/
Mozilla Public License 2.0
412 stars 65 forks source link

Assigning parameter values to non-standard models #395

Closed thetenthbox closed 11 months ago

thetenthbox commented 1 year ago

I am trying to use PyTerrier to conduct information retrieval experiments.There are several weighting models implemented in the original Java code and in the original Terrier documentation - http://terrier.org/docs/current/javadoc/org/terrier/matching/models/package-summary.html

However, I am unable to tune and assign parameter values for models mentioned in the Java documentation but not in the PyTerrier docs: dfr = pt.BatchRetrieve(index, wmodel="DFR_BM25", controls={"c.0":10, "c.1":0},metadata=["docno",'text'], num_results=100)

For example, here I am unable to set the control properties/parameters for the DFR_BM25 model. The results of this retrieval does not change with changing values of 'c.0' or 'c.1'. The documentation does not state what each model's parameters are, except for the standard ones like BM25.

cmacdonald commented 1 year ago

Hi,

DFR_BM25 only has a "c" control, not "c.0" -- thats for field-based weighting models. I think Norm2 in DFR is not defined for c=0 IIRC; Try c=1 as a starting point:

dfr = pt.BatchRetrieve(index, wmodel="DFR_BM25", controls={"c" : 1},metadata=["docno",'text'], num_results=100)