2013-03-26 109 views
2

我已经实现了一些python代码来运行使用BM25的whoosh上的搜索,并且都出去了,但现在我正在尝试将得分机制更改为余弦,我得到这个错误:余弦得分在嗖,python

File "TFIDF.py", line 18, in tfidf with ix.searcher(weighting=whoosh.scoring.Cosine()) as searcher: AttributeError: 'module' object has no attribute 'Cosine'

如果我输入余弦

from whoosh.scoring import Cosine 

我得到这个:

File "TFIDF.py", line 4, in <module> 
    from whoosh.scoring import Cosine 
ImportError: cannot import name Cosine 

我的代码如下:

import whoosh 
from whoosh.scoring import Cosine 
from whoosh.fields import * 
from whoosh.scoring import * 
from whoosh.qparser import * 
from whoosh.query import * 
from whoosh.index import open_dir 

#Index path 
lab3dir= "../lab3/Aula3_1/" 
ix = open_dir(lab3dir + "indexdir") #Index generated in previous lab 


def cosine(queryTerms): 
    list=[] 
    dict={} # dict com ID do doc e Similiaridade 
    with ix.searcher(weighting=whoosh.scoring.Cosine()) as searcher: 
     query = QueryParser("content", ix.schema, group=OrGroup).parse(u(queryTerms)) 
     results = searcher.search(query, limit=100) 
     for i,r in enumerate(results): 
      list.append(r["id"]) 
      print r, results.score(i) 
      dict[r["id"]]= results.score(i) 
    return dict 

任何ideias ???

谢谢!

+0

你有没有找到一种方法可以在Whoosh中进行余弦得分? – 2014-09-18 09:42:34

+0

是的,但老实说,我并不完全记得是什么东西,但你可以在这里找到它的代码:https://github.com/diasdavid/eadw-ist/blob/master/src/newsSearch/TFIDF .py 如果我没有错TFIDF ===余弦 – 2014-09-19 10:56:53

+0

感谢您的回复,但我没有在您的代码或在Whoosh的TF_IDF实现中看到余弦得分公式。 – 2014-09-23 05:42:02

回答