com.optimaize.langdetect.i18n.LdLocale Java Examples
The following examples show how to use
com.optimaize.langdetect.i18n.LdLocale.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: OptimaizeLanguageDetector.java From ambiverse-nlu with Apache License 2.0 | 6 votes |
public Language detectLanguage(String text) throws AidaUnsupportedLanguageException { TextObject textObject = textObjectFactory.forText(text); Optional<LdLocale> lang = languageDetector.detect(textObject); if (!lang.isPresent()) { throw new AidaUnsupportedLanguageException( "Language could not be detected. Please specify it as a parameter in ISO 639-1 two-letter format, e.g. 'cs', 'en', 'de', 'es', or 'zh'."); } String language = lang.get().getLanguage(); Language result; try { result = Language.getLanguageForString(language); } catch (IllegalArgumentException e) { throw new AidaUnsupportedLanguageException("Language '" + language + "' has been detected but it is not supported. " + "If this is not the language of your document, please specify the correct language as a parameter in ISO 639-1 two-letter format, e.g. 'cs', 'en', 'de', 'es', or 'zh'."); } return result; }
Example #2
Source File: LanguageDetectorImpl.java From language-detector with Apache License 2.0 | 6 votes |
/** * Use the {@link LanguageDetectorBuilder}. */ LanguageDetectorImpl(@NotNull NgramFrequencyData ngramFrequencyData, double alpha, Optional<Long> seed, int shortTextAlgorithm, double prefixFactor, double suffixFactor, double probabilityThreshold, double minimalConfidence, @Nullable Map<LdLocale, Double> langWeightingMap, @NotNull NgramExtractor ngramExtractor) { if (alpha<0d || alpha >1d) throw new IllegalArgumentException("alpha must be between 0 and 1, but was: "+alpha); if (prefixFactor <0d || prefixFactor >10d) throw new IllegalArgumentException("prefixFactor must be between 0 and 10, but was: "+prefixFactor); if (suffixFactor <0d || suffixFactor >10d) throw new IllegalArgumentException("suffixFactor must be between 0 and 10, but was: "+suffixFactor); if (probabilityThreshold<0d || probabilityThreshold>1d) throw new IllegalArgumentException("probabilityThreshold must be between 0 and 1, but was: "+probabilityThreshold); if (minimalConfidence<0d || minimalConfidence>1d) throw new IllegalArgumentException("minimalConfidence must be between 0 and 1, but was: "+minimalConfidence); if (langWeightingMap!=null && langWeightingMap.isEmpty()) langWeightingMap = null; this.ngramFrequencyData = ngramFrequencyData; this.alpha = alpha; this.seed = seed; this.shortTextAlgorithm = shortTextAlgorithm; this.prefixFactor = prefixFactor; this.suffixFactor = suffixFactor; this.probabilityThreshold = probabilityThreshold; this.minimalConfidence = minimalConfidence; this.priorMap = (langWeightingMap==null) ? null : Util.makeInternalPrioMap(langWeightingMap, ngramFrequencyData.getLanguageList()); this.ngramExtractor = ngramExtractor; }
Example #3
Source File: Util.java From language-detector with Apache License 2.0 | 6 votes |
/** */ public static double[] makeInternalPrioMap(@NotNull Map<LdLocale, Double> langWeightingMap, @NotNull List<LdLocale> langlist) { assert !langWeightingMap.isEmpty(); double[] priorMap = new double[langlist.size()]; double sump = 0; for (int i=0;i<priorMap.length;++i) { LdLocale lang = langlist.get(i); if (langWeightingMap.containsKey(lang)) { double p = langWeightingMap.get(lang); assert p>=0 : "Prior probability must be non-negative!"; priorMap[i] = p; sump += p; } } assert sump > 0 : "Sum must be greater than zero!"; for (int i=0;i<priorMap.length;++i) priorMap[i] /= sump; return priorMap; }
Example #4
Source File: TechnicalLanguageDetectorImplTest.java From language-detector with Apache License 2.0 | 6 votes |
private LanguageDetector makeDetector() { //building exactly like the old detector behaved. LanguageDetectorBuilder detectorBuilder = LanguageDetectorBuilder.create(NgramExtractor.gramLengths(1)) .affixFactor(1.0) .shortTextAlgorithm(0); LanguageProfileBuilder profileBuilder = new LanguageProfileBuilder(LdLocale.fromString("en")); add(detectorBuilder, profileBuilder, TRAINING_EN); profileBuilder = new LanguageProfileBuilder(LdLocale.fromString("fr")); add(detectorBuilder, profileBuilder, TRAINING_FR); profileBuilder = new LanguageProfileBuilder(LdLocale.fromString("ja")); add(detectorBuilder, profileBuilder, TRAINING_JA); return detectorBuilder.build(); }
Example #5
Source File: LanguageProfileValidatorTest.java From language-detector with Apache License 2.0 | 6 votes |
@Test public void validationTest() throws IOException { TextObjectFactory textObjectFactory = CommonTextObjectFactories.forIndexingCleanText(); TextObject inputText = textObjectFactory.create(); //German text from: https://germantestdrive.wordpress.com/2009/07/09/langer-test-text/ inputText.append("Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik. Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg. Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rethorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort „und“ und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren. Doch alles Gutzureden konnte es nicht überzeugen und so dauerte es nicht lange, bis ihm ein paar heimtückische Werbetexter auflauerten, es mit Longe und Parole betrunken machten und es dann in ihre Agentur schleppten, wo sie es für ihre Projekte wieder und wieder mißbrauchten. Und wenn es nicht umgeschrieben wurde, dann benutzen Sie es immernoch. Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik. Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg. Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rethorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort „und“ und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren. Doch alles Gutzureden konnte es nicht überzeugen und so dauerte es nicht lange, bis ihm ein paar heimtückische Werbetexter auflauerten, es mit Longe und Parole betrunken machten und es dann in ihre Agentur schleppten, wo sie es für ihre Projekte wieder und wieder mißbrauchten. Und wenn es nicht umgeschrieben wurde, dann benutzen Sie es immernoch. Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik. Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg. Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rethorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort „und“ und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren. Doch alles Gutzureden konnte es nicht überzeugen und so dauerte es nicht lange, bis ihm ein paar heimtückische Werbetexter auflauerten, es mit Longe und Parole betrunken machten und es dann in ihre Agentur schleppten, wo sie es für ihre Projekte wieder und wieder mißbrauchten. Und wenn es nicht umgeschrieben wurde, dann benutzen Sie es immernoch. Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik. Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg. Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rethorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort „und“ und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren. Doch alles Gutzureden konnte es nicht überzeugen und so dauerte es nicht lange, bis ihm ein paar heimtückische Werbetexter auflauerten, es mit Longe und Parole betrunken machten und es dann in ihre Agentur schleppten, wo sie es für ihre Projekte wieder und wieder mißbrauchten. Und wenn es nicht umgeschrieben wurde, dann benutzen Sie es immernoch. Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik. Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg. Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rethorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort „und“ und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren. Doch alles Gutzureden konnte es nicht überzeugen und so dauerte es nicht lange, bis ihm ein paar heimtückische Werbetexter auflauerten, es mit Longe und Parole betrunken machten und es dann in ihre Agentur schleppten, wo sie es für ihre Projekte wieder und wieder mißbrauchten. Und wenn es nicht umgeschrieben wurde, dann benutzen Sie es immernoch. Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik. Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg. Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rethorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort „und“ und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren. Doch alles Gutzureden konnte es nicht überzeugen und so dauerte es nicht lange, bis ihm ein paar heimtückische Werbetexter auflauerten, es mit Longe und Parole betrunken machten und es dann in ihre Agentur schleppten, wo sie es für ihre Projekte wieder und wieder mißbrauchten. Und wenn es nicht umgeschrieben wurde, dann benutzen Sie es immernoch. Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik. Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg. Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rethorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort „und“ und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren. Doch alles Gutzureden konnte es nicht überzeugen und so dauerte es nicht lange, bis ihm ein paar heimtückische Werbetexter auflauerten, es mit Longe und Parole betrunken machten und es dann in ihre Agentur schleppten, wo sie es für ihre Projekte wieder und wieder mißbrauchten. Und wenn es nicht umgeschrieben wurde, dann benutzen Sie es immernoch. Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik. Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg. Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rethorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort „und“ und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren. Doch alles Gutzureden konnte es nicht überzeugen und so dauerte es nicht lange, bis ihm ein paar heimtückische Werbetexter auflauerten, es mit Longe und Parole betrunken machten und es dann in ihre Agentur schleppten, wo sie es für ihre Projekte wieder und wieder mißbrauchten. Und wenn es nicht umgeschrieben wurde, dann benutzen Sie es immernoch. Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik. Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg. Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rethorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort „und“."); LanguageProfileBuilder languageProfileBuilder = new LanguageProfileBuilder(LdLocale.fromString("de")) .ngramExtractor(NgramExtractors.standard()) .minimalFrequency(5); double result = new LanguageProfileValidator() .loadAllBuiltInLanguageProfiles() .setK(5) .loadInputSample(inputText) .setLanguageProfileBuilder(languageProfileBuilder) .validate(); assertEquals(0.9999971D, result, 0.0000001); }
Example #6
Source File: OptimaizeLanguageDetector.java From ambiverse-nlu with Apache License 2.0 | 6 votes |
public Language detectLanguage(String text) throws AidaUnsupportedLanguageException { TextObject textObject = textObjectFactory.forText(text); Optional<LdLocale> lang = languageDetector.detect(textObject); if (!lang.isPresent()) { throw new AidaUnsupportedLanguageException( "Language could not be detected. Please specify it as a parameter in ISO 639-1 two-letter format, e.g. 'en', 'de', 'es', or 'zh'."); } String language = lang.get().getLanguage(); Language result; try { result = Language.getLanguageForString(language); } catch (IllegalArgumentException e) { throw new AidaUnsupportedLanguageException("Language '" + language + "' has been detected but it is not supported. " + "If this is not the language of your document, please specify the correct language as a parameter in ISO 639-1 two-letter format, e.g. 'en', 'de', 'es', or 'zh'."); } return result; }
Example #7
Source File: DetectedLanguageTest.java From language-detector with Apache License 2.0 | 5 votes |
@Test public final void basic() { DetectedLanguage lang = new DetectedLanguage(LdLocale.fromString("en"), 1.0); assertEquals(lang.getLocale().getLanguage(), "en"); assertEquals(lang.getProbability(), 1.0, 0.0001); assertEquals(lang.toString(), "DetectedLanguage[en:1.0]"); }
Example #8
Source File: LanguageProfileReaderTest.java From language-detector with Apache License 2.0 | 5 votes |
private void verify_readAllBuiltIn(List<LanguageProfile> profiles) { assertEquals(profiles.size(), 71); //adjust this number when adding more languages Set<LdLocale> allLangs = new HashSet<>(); for (LanguageProfile profile : profiles) { assertFalse("Duplicate language: "+profile.getLocale(), allLangs.contains(profile.getLocale())); allLangs.add(profile.getLocale()); } assertTrue(allLangs.contains(LdLocale.fromString("de"))); assertTrue(allLangs.contains(LdLocale.fromString("zh-CN"))); assertTrue(allLangs.contains(LdLocale.fromString("zh-TW"))); }
Example #9
Source File: DetectedLanguageTest.java From language-detector with Apache License 2.0 | 5 votes |
@Test public final void comparable() { List<DetectedLanguage> list = new ArrayList<>(); list.add(new DetectedLanguage(LdLocale.fromString("en"), 1.0)); list.add(new DetectedLanguage(LdLocale.fromString("de"), 1.0)); list.add(new DetectedLanguage(LdLocale.fromString("fr"), 0.9)); Collections.sort(list); assertEquals(list.get(0).getLocale().getLanguage(), "de"); //alphabetical de before en assertEquals(list.get(1).getLocale().getLanguage(), "en"); assertEquals(list.get(2).getLocale().getLanguage(), "fr"); //points 0.9 the last }
Example #10
Source File: Util.java From language-detector with Apache License 2.0 | 5 votes |
public static String wordProbToString(double[] prob, List<LdLocale> langlist) { Formatter formatter = new Formatter(); for(int j=0;j<prob.length;++j) { double p = prob[j]; if (p>=0.00001) { formatter.format(" %s:%.5f", langlist.get(j), p); } } return formatter.toString(); }
Example #11
Source File: NgramFrequencyData.java From language-detector with Apache License 2.0 | 5 votes |
/** * @param gramLengths for example [1,2,3] * @throws java.lang.IllegalArgumentException if languageProfiles or gramLengths is empty, or if one of the * languageProfiles does not have the grams of the required sizes. */ @NotNull public static NgramFrequencyData create(@NotNull Collection<LanguageProfile> languageProfiles, @NotNull Collection<Integer> gramLengths) throws IllegalArgumentException { if (languageProfiles.isEmpty()) throw new IllegalArgumentException("No languageProfiles provided!"); if (gramLengths.isEmpty()) throw new IllegalArgumentException("No gramLengths provided!"); Map<String, double[]> wordLangProbMap = new HashMap<>(); List<LdLocale> langlist = new ArrayList<>(); int langsize = languageProfiles.size(); int index = -1; for (LanguageProfile profile : languageProfiles) { index++; langlist.add( profile.getLocale() ); for (Integer gramLength : gramLengths) { if (!profile.getGramLengths().contains(gramLength)) { throw new IllegalArgumentException("The language profile for "+profile.getLocale()+" does not contain "+gramLength+"-grams!"); } for (Map.Entry<String, Integer> ngramEntry : profile.iterateGrams(gramLength)) { String ngram = ngramEntry.getKey(); Integer frequency = ngramEntry.getValue(); if (!wordLangProbMap.containsKey(ngram)) { wordLangProbMap.put(ngram, new double[langsize]); } double prob = frequency.doubleValue() / profile.getNumGramOccurrences(ngram.length()); wordLangProbMap.get(ngram)[index] = prob; } } } return new NgramFrequencyData(wordLangProbMap, langlist); }
Example #12
Source File: LanguageDetectorImpl.java From language-detector with Apache License 2.0 | 5 votes |
@Override public Optional<LdLocale> detect(CharSequence text) { List<DetectedLanguage> probabilities = getProbabilities(text); if (probabilities.isEmpty()) { return Optional.absent(); } else { DetectedLanguage best = probabilities.get(0); if (best.getProbability() >= minimalConfidence) { return Optional.of(best.getLocale()); } else { return Optional.absent(); } } }
Example #13
Source File: NgramFrequencyDataTest.java From language-detector with Apache License 2.0 | 5 votes |
@Test public void constantOrder() throws Exception { //expect constant order: int pos=0; for (LdLocale locale : allThreeGrams.getLanguageList()) { assertEquals(allThreeGrams.getLanguage(pos), locale); pos++; } }
Example #14
Source File: LanguageProfileReader.java From language-detector with Apache License 2.0 | 5 votes |
private boolean looksLikeLanguageProfileName(String fileName) { if (fileName.contains(".")) { return false; } try { LdLocale.fromString(fileName); return true; } catch (Exception e) { return false; } }
Example #15
Source File: LanguageProfileReader.java From language-detector with Apache License 2.0 | 5 votes |
/** * Reads all built-in language profiles from the "languages" folder (shipped with the jar). */ public List<LanguageProfile> readAllBuiltIn() throws IOException { List<LanguageProfile> loaded = new ArrayList<>(); for (LdLocale locale : BuiltInLanguages.getLanguages()) { loaded.add(readBuiltIn(locale)); } return loaded; }
Example #16
Source File: LanguageProfileReader.java From language-detector with Apache License 2.0 | 5 votes |
@NotNull public List<LanguageProfile> readBuiltIn(@NotNull Collection<LdLocale> languages) throws IOException { List<String> profileNames = new ArrayList<>(); for (LdLocale locale : languages) { profileNames.add(makeProfileFileName(locale)); } return read(LanguageProfileReader.class.getClassLoader(), PROFILES_DIR, profileNames); }
Example #17
Source File: LanguageProfileReader.java From language-detector with Apache License 2.0 | 5 votes |
@NotNull public LanguageProfile readBuiltIn(@NotNull LdLocale locale) throws IOException { String filename = makeProfileFileName(locale); String path = makePathForClassLoader(PROFILES_DIR, filename); try (InputStream in = LanguageProfileReader.class.getClassLoader().getResourceAsStream(path)) { if (in == null) { throw new IOException("No language file available named "+filename+" at " + path + "!"); } return read(in); } }
Example #18
Source File: LanguageProfileImpl.java From language-detector with Apache License 2.0 | 5 votes |
/** * Use the builder. */ LanguageProfileImpl(@NotNull LdLocale locale, @NotNull Map<Integer, Map<String, Integer>> ngrams) { this.locale = locale; this.ngrams = ImmutableMap.copyOf(ngrams); this.stats = makeStats(ngrams); }
Example #19
Source File: LanguageCheckerImpl.java From translator with MIT License | 5 votes |
@Override public String detect(String text) { //query: TextObject textObject = textObjectFactory.forText(text); Optional<LdLocale> lang = languageDetector.detect(textObject); if(lang.isPresent()){ return lang.get().getLanguage(); } return "en"; }
Example #20
Source File: OptimaizeDetector.java From vespa with Apache License 2.0 | 5 votes |
private static Language guessLanguageUsingOptimaize(String input) { Optional<LdLocale> result = languageDetector.detect(textObjectFactory.forText(input)); if ( ! result.isPresent()) return Language.UNKNOWN; log.log(Level.FINE, () -> "guessing language "+result.get()+" from input: "+input); return Language.fromLocale(new Locale(result.get().getLanguage())); }
Example #21
Source File: Translator.java From KaellyBot with GNU General Public License v3.0 | 5 votes |
/** * Détermine une langue à partir d'une source textuelle * @param source Source textuelle * @return Langue majoritaire détectée au sein de la source */ private static Language getLanguageFrom(String source){ TextObject textObject = CommonTextObjectFactories.forDetectingOnLargeText().forText(source); LdLocale lang = getLanguageDetector().detect(textObject) .or(LdLocale.fromString(Constants.defaultLanguage.getAbrev().toLowerCase())); for(Language lg : Language.values()) if(lang.getLanguage().equals(lg.getAbrev().toLowerCase())) return lg; return Constants.defaultLanguage; }
Example #22
Source File: NonEnglishCheckerService.java From Natty with GNU General Public License v3.0 | 5 votes |
@Override public String check(Post post) { String dataToCheck = stripTags(stripBody(post)).replaceAll("\\p{Punct}+", ""); try { TextObject textObject = textObjectFactory.forText(dataToCheck); Optional<LdLocale> lang = optimaizeDetector.detect(textObject); if (!lang.isPresent()) { if(dataToCheck.length()>50) { writer.append(dataToCheck); LanguageResult result = writer.getLanguage(); String tikaLang = result.getLanguage(); writer.close(); if (!tikaLang.toLowerCase().equals("")) { return tikaLang; } else{ return null; } } else if(dataToCheck.length()<50){ return null; } if(checkIfNoCodeBlock(post)){ return "Gibberish"; } return null; } return lang.get().getLanguage(); } catch (IOException e) { e.printStackTrace(); } return null; }
Example #23
Source File: DocumentLanguage.java From baleen with Apache License 2.0 | 5 votes |
@Override public void doProcess(JCas aJCas) throws AnalysisEngineProcessException { TextObject textObject = textObjectFactory.forText(aJCas.getDocumentText()); Optional<LdLocale> lang = languageDetector.detect(textObject); if (lang.isPresent()) { aJCas.setDocumentLanguage(lang.get().getLanguage()); } }
Example #24
Source File: DetectedLanguage.java From language-detector with Apache License 2.0 | 5 votes |
/** * @param locale * @param probability 0-1 */ public DetectedLanguage(@NotNull LdLocale locale, double probability) { if (probability<0d) throw new IllegalArgumentException("Probability must be >= 0 but was "+probability); if (probability>1d) throw new IllegalArgumentException("Probability must be <= 1 but was "+probability); this.locale = locale; this.probability = probability; }
Example #25
Source File: OldLangProfileConverter.java From language-detector with Apache License 2.0 | 5 votes |
public static LanguageProfile convert(LangProfile langProfile) { LdLocale locale; try { locale = LdLocale.fromString(langProfile.getName()); } catch (Exception e) { throw new RuntimeException("Profile file name logic was changed in v0.5, please update your custom profiles!", e); } LanguageProfileBuilder builder = new LanguageProfileBuilder(locale); for (Map.Entry<String, Integer> entry : langProfile.getFreq().entrySet()) { builder.addGram(entry.getKey(), entry.getValue()); } return builder.build(); }
Example #26
Source File: LanguageProfile.java From language-detector with Apache License 2.0 | 4 votes |
@NotNull LdLocale getLocale();
Example #27
Source File: DetectedLanguage.java From language-detector with Apache License 2.0 | 4 votes |
@NotNull public LdLocale getLocale() { return locale; }
Example #28
Source File: NgramFrequencyData.java From language-detector with Apache License 2.0 | 4 votes |
private NgramFrequencyData(@NotNull Map<String, double[]> wordLangProbMap, @NotNull List<LdLocale> langlist) { //not making immutable copies because I create them here (optimization). this.wordLangProbMap = Collections.unmodifiableMap(wordLangProbMap); this.langlist = Collections.unmodifiableList(langlist); }
Example #29
Source File: NgramFrequencyData.java From language-detector with Apache License 2.0 | 4 votes |
@NotNull public List<LdLocale> getLanguageList() { return langlist; }
Example #30
Source File: NgramFrequencyData.java From language-detector with Apache License 2.0 | 4 votes |
@NotNull public LdLocale getLanguage(int pos) { return langlist.get(pos); }