OSDN Git Service

new classify function added.
[rec10/rec10-git.git] / rec10 / trunk / src / n_gram.py
index fe88532..89e5aab 100644 (file)
@@ -29,6 +29,33 @@ def bigram(str1, str2):
             i = 0
         point = point + i
     return point
+def trigram(str1, str2):
+    str1 = zenhan.toHankaku(str1)
+    str2 = zenhan.toHankaku(str2)
+    str1 = str1.replace(" ", "")
+    str2 = str2.replace(" ", "")
+    """
+    trigramによる単語の近さを計算します。
+    """
+    gram = []
+    if len(str1) < 3:
+        gram.append(str1)
+    else:
+        tmp1 = str1[0]
+        tmp2 = str1[1]
+        for x in str1[2:]:
+            gram.append(tmp1 + tmp2 + x)
+            tmp1 = tmp2
+            tmp2 = x
+    point = 0
+    for x in gram:
+        i = find_gram(x, str2)
+        if i > 0:
+            i = 90 + 10 * i
+        else:
+            i = 0
+        point = point + i
+    return point
 def find_gram(gram, s):
     """
     s中にあらわれるgramの数を調べる