xueyiming 1 hete
szülő
commit
68cc908231

+ 4 - 1
src/main/java/examples/utils/SimilarityUtils.java

@@ -14,7 +14,7 @@ import java.util.List;
 @Slf4j
 public final class SimilarityUtils {
 
-    private static Word2Vec vec = new Word2Vec();
+    private static Word2Vec vec;
 
     public static void init() {
         Segment.getWords("1");
@@ -36,6 +36,9 @@ public final class SimilarityUtils {
     }
 
     public static float word2VecSimilarity(String str1, String str2) {
+        if (vec == null) {
+            init();
+        }
         List<String> words1 = Segment.getWords(str1);
         List<String> words2 = Segment.getWords(str2);
         return vec.sentenceSimilarity(words1, words2);

+ 35 - 0
src/main/scala/com/aliyun/odps/spark/examples/makedata_ad/v20240718/test.scala

@@ -0,0 +1,35 @@
+package com.aliyun.odps.spark.examples.makedata_ad.v20240718
+
+import examples.utils.SimilarityUtils
+import org.xm.Similarity
+
+import scala.collection.JavaConversions.asJavaCollection
+import scala.collection.mutable.ArrayBuffer
+
+object test {
+
+  def main(args: Array[String]): Unit = {
+    println(funcC34567ForTagsNew("高兴", "快乐"))
+  }
+
+  def funcC34567ForTagsNew(tags: String, title: String): Tuple4[Double, String, Double, Double] = {
+    // 匹配数量 匹配词 语义最高相似度分 语义平均相似度分
+    val tagsList = tags.split(",")
+    var d1 = 0.0
+    val d2 = new ArrayBuffer[String]()
+    var d3 = 0.0
+    var d4 = 0.0
+    for (tag <- tagsList) {
+      if (title.contains(tag)) {
+        d1 = d1 + 1.0
+        d2.add(tag)
+      }
+      val score = SimilarityUtils.word2VecSimilarity(tag, title)
+      d3 = if (score > d3) score else d3
+      d4 = d4 + score
+    }
+    d4 = if (tagsList.nonEmpty) d4 / tagsList.size else d4
+    (d1, d2.mkString(","), d3, d4)
+  }
+
+}