GoSenのデフォルト辞書であるdictionary.csvには、「VS」という全角英字の語彙が含まれている。そこで「あいつVSこいつ」をパースさせてみる。ソースは以下 (Senのサンプルコードを手直ししたもの)。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;
import net.java.sen.StringTagger;
import net.java.sen.SenFactory;
import net.java.sen.dictionary.Token;
public class GosenTest{
public static void main(String args[]) {
try {
String configFilename = "/usr/java/gosen/testdata/dictionary/dictionary.xml";
StringTagger tagger = SenFactory.getStringTagger(configFilename);
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please input Japanese sentence:");
String line;
while ((line = reader.readLine()) != null) {
List<Token> tokens = tagger.analyze(line);
for (Token token : tokens) {
System.out.println(token.toString() + "\\t" + token.getMorpheme().getPartOfSpeech());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
結果は (タブ文字は半角空白4つに置き換えた);
Please input Japanese sentence:
あいつVSこいつ
あいつ 名詞-代名詞-一般
V 記号-アルファベット
S 記号-アルファベット
こいつ 名詞-一般
記号"V"と記号"S"に別れてしまった。では「あいつVSこいつ」と"VS"を半角にするとどうなるだろうか。 ("全角"とか"半角"とかにいちいち「いわゆる」とか付けないよ)
あいつVSこいつ
あいつ 名詞-代名詞-一般
VS 未知語
こいつ 名詞-一般
"VS"がひとつの形態素として出力されたが、辞書にある「名詞」ではなくて「未知語」扱いになっている。辞書に含まれない英単語などは一律未知語扱いになるわけで、これではdictionary.csvにある「VS」という語彙の出番がない。IPA辞書とGoSenの相性の問題か。
dictionary.csvを書き換えて「VS」を「VS」にしても、antして辞書をコンパイルするときに自動的に更新されてしまうので意味がない。build.xmlの74行目付近にある
<target name="preprocess">
あたりをコメントアウトすれば辞書は自動的に更新されなくなるが、辞書の自動更新機能を殺してまでやりたいことかというと疑問だ。