aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/main/javacc/RankingExpressionParser.jj
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/main/javacc/RankingExpressionParser.jj')
-rwxr-xr-xsearchlib/src/main/javacc/RankingExpressionParser.jj32
1 files changed, 31 insertions, 1 deletions
diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj
index 42b5f2c191a..41647a5ef5b 100755
--- a/searchlib/src/main/javacc/RankingExpressionParser.jj
+++ b/searchlib/src/main/javacc/RankingExpressionParser.jj
@@ -138,6 +138,8 @@ TOKEN :
<RANDOM: "random"> |
<L1_NORMALIZE: "l1_normalize"> |
<L2_NORMALIZE: "l2_normalize"> |
+ <EUCLIDEAN_DISTANCE: "euclidean_distance"> |
+ <COSINE_SIMILARITY: "cosine_similarity"> |
<MATMUL: "matmul"> |
<SOFTMAX: "softmax"> |
<XW_PLUS_B: "xw_plus_b"> |
@@ -379,6 +381,8 @@ TensorFunctionNode tensorFunction() :
tensorExpression = tensorRandom() |
tensorExpression = tensorL1Normalize() |
tensorExpression = tensorL2Normalize() |
+ tensorExpression = tensorEuclideanDistance() |
+ tensorExpression = tensorCosineSimilarity() |
tensorExpression = tensorMatmul() |
tensorExpression = tensorSoftmax() |
tensorExpression = tensorXwPlusB() |
@@ -544,6 +548,30 @@ TensorFunctionNode tensorL2Normalize() :
{ return new TensorFunctionNode(new L2Normalize(TensorFunctionNode.wrap(tensor), dimension)); }
}
+TensorFunctionNode tensorEuclideanDistance() :
+{
+ ExpressionNode tensor1, tensor2;
+ String dimension;
+}
+{
+ <EUCLIDEAN_DISTANCE> <LBRACE> tensor1 = expression() <COMMA> tensor2 = expression() <COMMA> dimension = identifier() <RBRACE>
+ { return new TensorFunctionNode(new EuclideanDistance(TensorFunctionNode.wrap(tensor1),
+ TensorFunctionNode.wrap(tensor2),
+ dimension)); }
+}
+
+TensorFunctionNode tensorCosineSimilarity() :
+{
+ ExpressionNode tensor1, tensor2;
+ String dimension;
+}
+{
+ <COSINE_SIMILARITY> <LBRACE> tensor1 = expression() <COMMA> tensor2 = expression() <COMMA> dimension = identifier() <RBRACE>
+ { return new TensorFunctionNode(new CosineSimilarity(TensorFunctionNode.wrap(tensor1),
+ TensorFunctionNode.wrap(tensor2),
+ dimension)); }
+}
+
TensorFunctionNode tensorMatmul() :
{
ExpressionNode tensor1, tensor2;
@@ -701,6 +729,8 @@ String tensorFunctionName() :
( <RANDOM> { return token.image; } ) |
( <L1_NORMALIZE> { return token.image; } ) |
( <L2_NORMALIZE> { return token.image; } ) |
+ ( <EUCLIDEAN_DISTANCE> { return token.image; } ) |
+ ( <COSINE_SIMILARITY> { return token.image; } ) |
( <MATMUL> { return token.image; } ) |
( <SOFTMAX> { return token.image; } ) |
( <XW_PLUS_B> { return token.image; } ) |
@@ -1041,4 +1071,4 @@ String label() :
String string() : {}
{
<STRING> { return token.image.substring(1, token.image.length() - 1); }
-} \ No newline at end of file
+}