
artoria.action.similarity.support.XmTextSimilarityHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of artoria-extend Show documentation
Show all versions of artoria-extend Show documentation
Artoria is a java technology framework based on the facade pattern.
The newest version!
package artoria.action.similarity.support;
import artoria.action.handler.AbstractClassicActionHandler;
import artoria.action.similarity.TextSimilarity;
import artoria.util.CollectionUtils;
import artoria.util.StringUtils;
import org.xm.similarity.text.CosineSimilarity;
import org.xm.tokenizer.Word;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static artoria.util.ObjectUtils.cast;
/**
* TextSimilarityHandler.
* @see Similarity
*/
public class XmTextSimilarityHandler extends AbstractClassicActionHandler {
private static CosineSimilarity cosineSimilarity = new CosineSimilarity();
@Override
public T execute(Object input, Class clazz) {
isSupport(new Class[]{Double.class}, clazz);
TextSimilarity textSimilarity = (TextSimilarity) input;
List words1 = textSimilarity.getWords1();
List words2 = textSimilarity.getWords2();
String algorithm = textSimilarity.getAlgorithm();
String text1 = textSimilarity.getText1();
String text2 = textSimilarity.getText2();
if (CollectionUtils.isNotEmpty(words1) &&
CollectionUtils.isNotEmpty(words2)) {
return cast(cosineSimilarity.getSimilarity(convert(words1), convert(words2)));
}
else if (StringUtils.isNotBlank(text1) &&
StringUtils.isNotBlank(text2)) {
return cast(cosineSimilarity.getSimilarity(text1, text2));
}
else {
throw new UnsupportedOperationException();
}
}
protected List convert(List words) {
if (CollectionUtils.isEmpty(words)) { return Collections.emptyList(); }
List list = new ArrayList();
for (String word : words) {
list.add(new Word(word));
}
return list;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy