gpt4 book ai didi

java - 将 Tika LanguageIdentifier 限制为仅特定语言

转载 作者:行者123 更新时间:2023-11-30 07:45:15 24 4
gpt4 key购买 nike

我试图将 Apache Tika LanguageIdentifier 限制为一系列语言。当我运行下面的代码时,它只检测到文本为“de”,因此是德语。我想这样做的原因是为了让 LanguageIdentifier 由于语言限制而表现得更好。清理标准配置文件后,我只将我想要的配置文件添加到 map 中,并使用此 map 初始化 LanguageIdentifier。

String[] languages = {"de", "en", "fr", "nl", "es"};
Map<String, LanguageProfile> languageMaps = new HashMap <String, LanguageProfile>();

LanguageIdentifier.clearProfiles();

for (String language : languages) {

LanguageProfile profile = new LanguageProfile();
languageMaps.put(language, profile);

}

LanguageIdentifier.initProfiles(languageMaps);

String docText = "Hello";


LanguageIdentifier identifier = new LanguageIdentifier(docText);

System.out.println(identifier.getLanguage());

当我运行以下代码时

LanguageIdentifierLanguageIdentifier.getSupportedLanguages())

它从数组中返回语言,所以我真的不知道出了什么问题。

最佳答案

当您创建新的LanguageProfile时,您必须再次自行添加定义语言的所有ngram信息。通过此设置,您只需创建空容器,然后始终选择数组中的第一个,因为它是第一个,并且您没有任何其他信息。

参见API documentation of LanguageProfile

只需从以下位置获取 nedded 语言 ngram 文件 http://svn.apache.org/repos/asf/tika/trunk/tika-core/src/main/resources/org/apache/tika/language/

使用以下命令初始化它(假设 ngram 文件位于类路径根目录中):

String[] languages = { "de", "en" };

Map<String, LanguageProfile> languageMaps = new HashMap<String, LanguageProfile>();

LanguageIdentifier.clearProfiles();

for (String language : languages) {

LanguageProfile profile = new LanguageProfile();

InputStream stream;
try {
stream = new FileInputStream(new File("./" + language + ".ngp"));

BufferedReader reader = new BufferedReader(new InputStreamReader(stream, UTF_8));

String line = reader.readLine();

while (line != null) {
if (line.length() > 0 && !line.startsWith("#")) {
int space = line.indexOf(' ');
profile.add(line.substring(0, space), Long.parseLong(line.substring(space + 1)));
}
line = reader.readLine();
}

} catch (IOException e) {
throw new RuntimeException(e);
}

languageMaps.put(language, profile);

}

LanguageIdentifier.initProfiles(languageMaps);

关于java - 将 Tika LanguageIdentifier 限制为仅特定语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34032488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com