Permalink
Browse files

Found official Java classes for Snowball.

Just as I finished the Clojure implementation!! :(
  • Loading branch information...
weavejester committed Nov 17, 2011
1 parent a0c2e9d commit b0e7bc372dc897690d9c6109f9f2e537de922ef5
View
@@ -1,3 +1,5 @@
(defproject snowball-stemmer "1.0.0-SNAPSHOT"
:description "FIXME: write description"
- :dependencies [[org.clojure/clojure "1.2.1"]])
+ :dependencies [[org.clojure/clojure "1.2.1"]]
+ :source-path "src/clj"
+ :java-source-path "src/java")
@@ -0,0 +1,12 @@
+(ns stemmer.snowball
+ "Wrapper around the Snowball stemmer algorithm.
+ See: http://snowball.tartarus.org")
+
+(defn stemmer [lang]
+ (let [stemmer-name (str "org.tartarus.snowball.ext." (name lang) "Stemmer")
+ stemmer-class (Class/forName stemmer-name)]
+ (fn [word]
+ (let [instance (.newInstance stemmer-class)]
+ (.setCurrent instance word)
+ (.stem instance)
+ (.getCurrent instance)))))
@@ -0,0 +1,31 @@
+package org.tartarus.snowball;
+
+import java.lang.reflect.Method;
+
+public class Among {
+ public Among (String s, int substring_i, int result,
+ String methodname, SnowballProgram methodobject) {
+ this.s_size = s.length();
+ this.s = s.toCharArray();
+ this.substring_i = substring_i;
+ this.result = result;
+ this.methodobject = methodobject;
+ if (methodname.length() == 0) {
+ this.method = null;
+ } else {
+ try {
+ this.method = methodobject.getClass().
+ getDeclaredMethod(methodname, new Class[0]);
+ } catch (NoSuchMethodException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ public final int s_size; /* search string */
+ public final char[] s; /* search string */
+ public final int substring_i; /* index to longest matching substring */
+ public final int result; /* result of the lookup */
+ public final Method method; /* method to use if substring matches */
+ public final SnowballProgram methodobject; /* object to invoke method on */
+};
Oops, something went wrong.

0 comments on commit b0e7bc3

Please sign in to comment.