我有一个应用程序,该应用程序从开放数据平台中获取数据,然后在列表视图中显示接收到的数据,一些数据以希伯来语编写,并且我所居住的国家与以色列存在严重问题,所以我担心它会出现问题可能会惹我麻烦。
是否可以检测列表项是否用希伯来语编写,然后删除该列表项以使其不显示?
答案 0 :(得分:1)
一种非常简单的方法是检查所有字符是否都是希伯来字符。
希伯来语字符均位于Unicode希伯来语块中,介于U + 0590和U + 05FF之间。您可以定义一个阈值a,您认为该文本为希伯来语。
Map<Boolean, Long> map = str.chars()
.mapToObj(i -> i)
.collect(Collectors.partitioningBy(t -> isHebrew(t), Collectors.counting()));
long hebrew = map.get(true);
long total = map.get(false) + hebrew;
double ratio = hebrew / (double) total;
System.out.println((100 * ratio) + "%");
static boolean isHebrew(int c) {
return (c >= 0x0590 && c <= 0x05FF);
}
答案 1 :(得分:0)
基于this的答案:
使用bigram分析算法相对容易地自动检测文本的自然语言。您既可以自己实现它,也可以简单地使用一些现有的库,例如Language-Detection项目