РЕДАКТИРОВАТЬ: Извините, это PHP. Я не был уверен, что ты хотел. Я не знаю это в Java, но, возможно, следующее может быть преобразовано достаточно легко.
Ну, это зависит от размера нграмм, которые вы хотите.
У меня был довольно большой успех с отдельными буквами (особенно точными для определения языка), которые легко получить с помощью:
$letters=str_split(preg_replace('/[^a-z]/', '', strtolower($text)));
$letters=array_count_values($letters);
Тогда есть следующая функция для вычисления нграмм из слова:
function getNgrams($word, $n = 3) {
$ngrams = array();
$len = strlen($word);
for($i = 0; $i < $len; $i++) {
if($i > ($n - 2)) {
$ng = '';
for($j = $n-1; $j >= 0; $j--) {
$ng .= $word[$i-$j];
}
$ngrams[] = $ng;
}
}
return $ngrams;
}
Источником вышеупомянутого является здесь , который я рекомендую вам прочитать, и у них есть множество функций, позволяющих делать именно то, что вы хотите.