检测列表项是否用某种语言编写

时间:2019-06-15 20:09:39

标签: java android listview

我有一个应用程序,该应用程序从开放数据平台中获取数据,然后在列表视图中显示接收到的数据,一些数据以希伯来语编写,并且我所居住的国家与以色列存在严重问题,所以我担心它会出现问题可能会惹我麻烦。

是否可以检测列表项是否用希伯来语编写,然后删除该列表项以使其不显示?

2 个答案:

答案 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项目