Package com.tibco.patterns.learn.recpair
Class RecPairScorer
- java.lang.Object
-
- com.tibco.patterns.learn.recpair.RecPairScorer
-
- All Implemented Interfaces:
java.lang.AutoCloseable
public final class RecPairScorer extends java.lang.Object implements java.lang.AutoCloseableManages calculation of feature scores and communication with Patterns server. Does approximate text matching between the two records in the pair. Runs specific queries on the server using the feature query, maintains the necessary thesauri and an optional model on the server. The input of Record Pair Scorer is predefined record pairs (from file, other class, etc.) Features are defined in FeatureQuery object. Output is a feature vector for the RecPairExample. It contains match scores for each feature.
-
-
Constructor Summary
Constructors Constructor Description RecPairScorer(com.netrics.likeit.NetricsServerInterface server, com.netrics.likeit.NetricsTable tableDef, FeatureQuery featureQuery, java.nio.file.Path thesDir)Creates scorer object for scoring records.RecPairScorer(com.netrics.likeit.NetricsServerInterface server, java.lang.String table, FeatureQuery featureQuery, java.nio.file.Path thesDir)Creates scorer object for scoring records and getting field values from the existing table on the server.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description doublecalcAndScore(java.util.List<java.lang.String> tableRecValues, java.util.List<java.lang.String> queryValues)Calculates symmetric match score for the given pair of records using all feature querylets (that compute symmetric querylet scores) combined with an AND score combiner.doublecalcQltScore(java.lang.String featureName, int qltIndex, java.util.List<java.lang.String> tableRecValues, java.util.List<java.lang.String> queryValues)Calculates score of a single querylet of the given feature.voidclose()Deletes thesauri and model (if it exists) from server.protected voidfinalize()Provided for safety, but client code must callclose()explicitly.java.util.List<com.netrics.likeit.NetricsSearchResult>getLowConfMatches(java.util.List<java.lang.String> queryValues, double confThreshold, Confidence conf)Runs a query on server to get the low confidence matches in the data table for the given query record.The query uses the model and thesauri on server.booleanisModelLoaded()Checks if the model was loaded to server by this object.voidloadModel(java.lang.String projectName, java.nio.file.Path modelFile)Loads the model to server.voidsafeDeleteModel()Deletes the model from server if it has been loaded.double[]scoreRecPair(RecPairId recPairId)Computes symmetric querylet scores for the pair of records defined by key0 and key1.double[]scoreRecPair(java.util.List<java.lang.String> tableRecValues, java.util.List<java.lang.String> queryValues)Computes symmetric querylet scores for the given pair of records.java.lang.StringtoString()
-
-
-
Constructor Detail
-
RecPairScorer
public RecPairScorer(com.netrics.likeit.NetricsServerInterface server, com.netrics.likeit.NetricsTable tableDef, FeatureQuery featureQuery, java.nio.file.Path thesDir) throws java.io.IOException, com.netrics.likeit.NetricsExceptionCreates scorer object for scoring records. Does not use existing table on the server. Methods that search or get field values from the table on server cannot be used.- Parameters:
server- - refers to the server instance used to calculate feature scores. Not null.tableDef- - definition of the table that all records come from. Not null.featureQuery- - defines the query with model features (querylets). Not null.thesDir- - the directory with all thesaurus files used in feature query. May be null if no thesauri are used.- Throws:
com.netrics.likeit.NetricsException- if error occured on server.java.io.IOException- if the server does not exist, is not accessible, or if an I/O error occurs while communicating with server
-
RecPairScorer
public RecPairScorer(com.netrics.likeit.NetricsServerInterface server, java.lang.String table, FeatureQuery featureQuery, java.nio.file.Path thesDir) throws java.io.IOException, com.netrics.likeit.NetricsExceptionCreates scorer object for scoring records and getting field values from the existing table on the server. Loads thesauri to server.- Parameters:
server- - refers to the server instance used to calculate feature scores.table- - the table that contains all records. Must exist on server.featureQuery- - defines the query with model features (querylets)thesDir- - the directory with all thesaurus files used in feature query. May be null if no thesauri are used.- Throws:
com.netrics.likeit.NetricsException- if the given table is not found on server (TBLNOTFOUND), or if another error occured on server.java.io.IOException- if the server does not exist, is not accessible or if an I/O error occurs while communicating with server.
-
-
Method Detail
-
close
public void close() throws java.io.IOException, com.netrics.likeit.NetricsExceptionDeletes thesauri and model (if it exists) from server. Must be called when this object will no longer be used.- Specified by:
closein interfacejava.lang.AutoCloseable- Throws:
com.netrics.likeit.NetricsException- if the server indicates that an error has occuredjava.io.IOException- if an I/O error occurs while communicating with server
-
finalize
protected void finalize() throws java.io.IOException, com.netrics.likeit.NetricsExceptionProvided for safety, but client code must callclose()explicitly.- Overrides:
finalizein classjava.lang.Object- Throws:
com.netrics.likeit.NetricsException- if the server indicates that an error has occuredjava.io.IOException- if an I/O error occurs while communicating with server
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object- Returns:
- information on table, query, thesauri and model on server.
-
scoreRecPair
public double[] scoreRecPair(RecPairId recPairId) throws java.io.IOException, com.netrics.likeit.NetricsException
Computes symmetric querylet scores for the pair of records defined by key0 and key1. The two records must exist in the server table which must be provided to the constructor.- Parameters:
recPairId- - the keys for the record pair to be scored. Not null.- Returns:
- Feature vector, i.e. querylet scores for the record pair.
- Throws:
com.netrics.likeit.NetricsException- if a record does not exist in the server table, or other errors on server.java.io.IOException- if I/O error occurs while communicating with serverjava.lang.IllegalArgumentException- if number of query field values does not match the number of all fields in feature query.java.lang.IllegalStateException- if server table was not provided to the constructor, or if the object has been closed.
-
scoreRecPair
public double[] scoreRecPair(java.util.List<java.lang.String> tableRecValues, java.util.List<java.lang.String> queryValues) throws java.io.IOException, com.netrics.likeit.NetricsExceptionComputes symmetric querylet scores for the given pair of records.- Parameters:
tableRecValues- - field values of record 0. Does not include the key field. Not null.queryValues- - field values of record 1. Does not include the key field. Not null.- Returns:
- Feature vector, i.e. querylet scores for the record pair.
- Throws:
com.netrics.likeit.NetricsException- - errors on the serverjava.io.IOException- if I/O error occurs while communicating with serverjava.lang.IllegalArgumentException- if numbers of values in table record and query do not match, or if number of query field values does not match the number of all fields in feature query.java.lang.IllegalStateException- if this object has been closed.
-
calcAndScore
public double calcAndScore(java.util.List<java.lang.String> tableRecValues, java.util.List<java.lang.String> queryValues) throws java.io.IOException, com.netrics.likeit.NetricsExceptionCalculates symmetric match score for the given pair of records using all feature querylets (that compute symmetric querylet scores) combined with an AND score combiner.- Parameters:
tableRecValues- - field values of record 0. Does not include the key field. Not null.queryValues- - field values of record 1. Does not include the key field. Not null.- Returns:
- the match score for the record pair from the AND score combiner.
- Throws:
com.netrics.likeit.NetricsException- - errors on the serverjava.io.IOException- if I/O error occurs while communicating with serverjava.lang.IllegalArgumentException- if numbers of values in table record and query do not match, or if number of query field values does not match the number of all fields in feature query.java.lang.IllegalStateException- if this object has been closed.
-
calcQltScore
public double calcQltScore(java.lang.String featureName, int qltIndex, java.util.List<java.lang.String> tableRecValues, java.util.List<java.lang.String> queryValues) throws java.io.IOException, com.netrics.likeit.NetricsExceptionCalculates score of a single querylet of the given feature.- Parameters:
featureName- - name of the feature. If several features have the same name, the first such feature is used.qltIndex- - index of the querylet within the feature.tableRecValues- - field values of record 0. Does not include the key field. Not null.queryValues- - field values of record 1. Does not include the key field. Not null.- Returns:
- the match score of the querylet.
- Throws:
java.lang.IllegalArgumentException- if feature with the given name is not found, or if number of query field values does not match the number of all fields.java.lang.IllegalStateException- if this object has been closed.com.netrics.likeit.NetricsException- - errors on the serverjava.io.IOException- if I/O error occurs while communicating with server
-
loadModel
public void loadModel(java.lang.String projectName, java.nio.file.Path modelFile) throws com.netrics.likeit.NetricsException, java.io.IOExceptionLoads the model to server. Deletes any previous model.- Parameters:
projectName- - project name to be prepended to the model name on server.modelFile- - full path to the model file to be loaded.- Throws:
com.netrics.likeit.NetricsException- if the server indicates that an error has occuredjava.io.IOException- if an I/O error occursjava.lang.IllegalArgumentException- if modelFile does not exist.java.lang.IllegalStateException- if this object has been closed.
-
safeDeleteModel
public void safeDeleteModel() throws com.netrics.likeit.NetricsException, java.io.IOExceptionDeletes the model from server if it has been loaded.- Throws:
com.netrics.likeit.NetricsException- if the server indicates that an error has occured.java.io.IOException- if an I/O error occurs.
-
isModelLoaded
public boolean isModelLoaded()
Checks if the model was loaded to server by this object. (It does not check the server if the loaded model is still there.)- Returns:
- true if the trained model has been leaded to server.
-
getLowConfMatches
public java.util.List<com.netrics.likeit.NetricsSearchResult> getLowConfMatches(java.util.List<java.lang.String> queryValues, double confThreshold, Confidence conf) throws com.netrics.likeit.NetricsException, java.io.IOExceptionRuns a query on server to get the low confidence matches in the data table for the given query record.The query uses the model and thesauri on server.- Parameters:
queryValues- - field values for the query record. Not null.confThreshold- - return records with confidence less than or equal to this threshold.conf- - contains feature confidence parameters to be used in the query. Not null.- Returns:
- the low confidence matches in the data table returned by the query.
- Throws:
com.netrics.likeit.NetricsException- if the server indicates that an error has occuredjava.io.IOException- if an I/O error occursjava.lang.IllegalStateException- if this object has been closed, or if the data table or the model was not loaded to server, or if conf is not FeatureQConf.
-
-