LoginSignup
11
10

More than 5 years have passed since last update.

英語の形態素解析TreeTagger[java]でやってみた。

Last updated at Posted at 2013-02-25

TreeTaggerのインストールは、この辺りで(直に叩く場合perlが必要みたい)
http://funoisan.blog.fc2.com/blog-entry-4.html
僕はこんな感じで導入しました。(eclipse使ってます)
http://d.hatena.ne.jp/ZAORIKU/

この2つのサンプルをくっつけたら動きましたという内容です。
http://code.google.com/p/tt4j/
http://code.google.com/p/tt4j/wiki/Usage
軽いメモなのでリンク先を参照してください。

treetaggerフォルダはcドライブ直下
パラメータファイルも以下の位置に必要
/treetagger/lib/english.par 

サンプル文字列は、メインの頭の方のここでいれてます。
String str="I've been to America. I bought leaves";

package org.annolab.tt4j;

import static java.util.Arrays.asList;

import java.text.BreakIterator;
import java.util.ArrayList;
import java.util.List;

public class Example {
        public static void main(String[] args) throws Exception {
                // Point TT4J to the TreeTagger installation directory. The executable is expected
                // in the "bin" subdirectory - in this example at "/opt/treetagger/bin/tree-tagger"
                //System.setProperty("treetagger.home", "/opt/treetagger");
                System.setProperty("treetagger.home", "/treetagger");// ここに本体が必要 \treetagger\bin\tree-tagger.exe これのことのようです。
                TreeTaggerWrapper tt = new TreeTaggerWrapper<String>();

                String str="I've been to America. I bought leaves";//サンプル
                List<String> sampleStr  = tokenize(str);

                try {
                        //tt.setModel("/opt/treetagger/models/english.par:iso8859-1");
                        tt.setModel("/treetagger/lib/english.par:iso8859-1");// ここにpar パラメータファイルなるものが必要
                        tt.setHandler(new TokenHandler<String>() {
                                public void token(String token, String pos, String lemma) {
                                        System.out.println(token + "\t" + pos + "\t" + lemma);
                                }
                        });
                        //tt.process(asList(new String[] { "This", "is", "a", "test", ".", "I","bought","the","car",".","I've","bought","a","car","."}));
                        tt.process(sampleStr);
                }
                finally {
                        tt.destroy();
                }


        }

        public static 
        List<String> tokenize(
                        final String aString)
        {
                List<String> tokens = new ArrayList<String>();
                BreakIterator bi = BreakIterator.getWordInstance();
                bi.setText(aString);
                int begin = bi.first();
                int end;
                for (end = bi.next(); end != BreakIterator.DONE; end = bi.next()) {
                        String t = aString.substring(begin, end);
                        if (t.trim().length() > 0) {
                                tokens.add(aString.substring(begin, end));
                        }
                        begin = end;
                }
                if (end != -1) {
                        tokens.add(aString.substring(end));
                }
                return tokens;
        }
}
11
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10