0

私はこのライブラリを試しました。スタックオーバーフローに関する投稿の1つで提案されていますが、

libのjarをビルドパスに追加しましたが、言語のプロファイルでDetectorFactoryクラスを初期化できません。

これは、サンプルの1つで提案されているように、検出を処理するクラスです。

class LanguageDetector {
    public void init(String profileDirectory) throws LangDetectException {
        DetectorFactory.loadProfile(profileDirectory);
    }
    public String detect(String text) throws LangDetectException {
        Detector detector = DetectorFactory.create();
        detector.append(text);
        return detector.detect();
    }
    public ArrayList<Language> detectLangs(String text) throws LangDetectException {
        Detector detector = DetectorFactory.create();
        detector.append(text);
        return detector.getProbabilities();
    }
}

すべての言語プロファイルはmyProject/profilesの下に保存されます。クラスをインスタンス化しようとすると、logcatへの有用なメッセージなしでアプリがクラッシュします

クラスの呼び出し():

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        context = this.getActivity().getApplicationContext();
/*        LanguageDetector detector = null;
        try {
            detector.init("/waggle/profiles");
        } catch (LangDetectException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }*/
        new GetDataTask().execute(context);

    }
4

1 に答える 1

0

メソッドLanguageDetectorを静的に変更します。

class LanguageDetector {
    public static void init(String profileDirectory) throws LangDetectException {
        DetectorFactory.loadProfile(profileDirectory);
    }
    public static String detect(String text) throws LangDetectException {
        Detector detector = DetectorFactory.create();
        detector.append(text);
        return detector.detect();
    }
    public static ArrayList<Language> detectLangs(String text) throws LangDetectException {
        Detector detector = DetectorFactory.create();
        detector.append(text);
        return detector.getProbabilities();
    }
}

そして、次のように使用します。

try {
    LanguageDetector.init("/waggle/profiles"); // <-- Are you sure the profiles are at this location???
} catch (LangDetectException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

String detectedLanguage = null;
try {
    detectedLanguage = LanguageDetector.detect("Dies ist ein Beispiel in Deutsch.");
} catch (LangDetectException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

if (detectedLanguage != null) {
    // Implement your logic here
}
于 2013-07-20T17:21:08.390 に答える