gpt4 book ai didi

java - 在 PyLucene 中实现自定义相似度

转载 作者:行者123 更新时间:2023-11-30 10:18:10 29 4
gpt4 key购买 nike

我想在 PyLucene 中编写一个自定义的 Similarity 类来实现我自己的检索模型。

通常,使用 Lucene 的 Java 版本,您必须扩展 Similarity 类并覆盖方法。例如:

public class IDFSimilarity extends TFIDFSimilarity {

/** Sole constructor: parameter-free */
public IDFSimilarity() {
}

/** Implemented as <code>overlap / maxOverlap</code>. */
@Override
public float coord(int overlap, int maxOverlap) {
return overlap / (float) maxOverlap;
}

/** Implemented as <code>1/sqrt(sumOfSquaredWeights)</code>. */
@Override
public float queryNorm(float sumOfSquaredWeights) {
return (float) (1/Math.sqrt(sumOfSquaredWeights));
}
.
.
etc

但是,PyLucene 使用 JCC,我不清楚如何在 python 脚本中扩展类。它会是这样的:

import lucene
from org.apache.lucene.search.similarities import TFIDFSimilarity

class IDFSimilarity (TFIDFSimilarity):
def __init__(self):
TFIDFSimilarity.__init__()
?
?

但我不知道如何进行。我在网上找不到任何示例或文档。

有什么想法吗?

最佳答案

来自 @JanŠpaček在原始问题中发表评论,谢谢!

PyLucene 源代码中有一个在 Python 中定义相似性的示例。

from org.apache.pylucene.search.similarities import PythonClassicSimilarity

class SimpleSimilarity(PythonClassicSimilarity):

def lengthNorm(self, numTerms):
return 1.0

def tf(self, freq):
return freq

def sloppyFreq(self, distance):
return 2.0

def idf(self, docFreq, numDocs):
return 1.0

def idfExplain(self, collectionStats, termStats):
return Explanation.match(1.0, "inexplicable", [])

点击here查看示例。

关于java - 在 PyLucene 中实现自定义相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49432252/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com