SimilarityUtils.java 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package examples.utils;
  2. import com.tzld.piaoquan.recommend.similarity.word2vec.Segment;
  3. import com.tzld.piaoquan.recommend.similarity.word2vec.Word2Vec;
  4. import lombok.extern.slf4j.Slf4j;
  5. import java.io.IOException;
  6. import java.util.List;
  7. /**
  8. * @author dyp
  9. * 从recommend-server复制过来的 @zhangbo 20241211
  10. */
  11. @Slf4j
  12. public final class SimilarityUtils {
  13. private static Word2Vec vec = new Word2Vec();
  14. public static void init() {
  15. Segment.getWords("1");
  16. try {
  17. long start = System.currentTimeMillis();
  18. String endpoint = "oss-cn-hangzhou-internal.aliyuncs.com";
  19. String bucketName = "art-recommend";
  20. String path = "similarity/word2vec/Google_word2vec_zhwiki210720_300d.bin";
  21. String accessKeyId = "LTAIP6x1l3DXfSxm";
  22. String accessKetSecret = "KbTaM9ars4OX3PMS6Xm7rtxGr1FLon";
  23. Word2Vec temp = new Word2Vec();
  24. temp.loadGoogleModelFromOss(endpoint, bucketName, path, accessKeyId, accessKetSecret);
  25. vec = temp;
  26. long end = System.currentTimeMillis();
  27. log.info("Model loaded successfully cost {}. Scheduled tasks cancelled.", end - start);
  28. } catch (IOException e) {
  29. log.error("loadGoogleModelFromOss error", e);
  30. }
  31. }
  32. public static float word2VecSimilarity(String str1, String str2) {
  33. List<String> words1 = Segment.getWords(str1);
  34. List<String> words2 = Segment.getWords(str2);
  35. return vec.sentenceSimilarity(words1, words2);
  36. }
  37. }