将单词标记为古吉拉特语的音节(古吉拉特语字符)

Tokenize words into syllables (gujarati characters) for Gujarati

我正在尝试将 Gujarati(一种 Indian 语言)单词标记为字符。

示例: વાનર是单词,然后我想要字符列表,例如 [વા, ન, ર]

我试过 java.text.BreakIteratorGujarati locale 但没有用。虽然它非常适合 Hindi.

这是代码:

import java.text.*;
import java.util.*;

public class Language{
    public static void main(String[] args) {
        String text = "વાનર";
        Locale gujarati = new Locale("gu","IN");
        BreakIterator breaker = BreakIterator.getCharacterInstance(gujarati);
        breaker.setText(text);
        int start = breaker.first();
        for (int end = breaker.next(); end != BreakIterator.DONE; start = end, end = breaker.next()) {
            System.out.println(text.substring(start,end));
        }    
    }
}

输出:

વ
ા
ન
ર

有没有图书馆可以正确地做到这一点? 我可以使用 Java

以外的语言

不确定这个库是否提供了您想要的确切解决方案,但我编写了一个名为 MgntUtils 的库并将其发布为开源,可作为 Maven 中心的 Maven 工件使用 (请参阅 here) as well as on github 那里有一个实用程序可以将任何字符串转换为 unicode 序列,反之亦然。您所要做的就是:

String codes = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence("Hello world");

它会 return String "\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064"

这同样适用于任何语言的任何字符串,包括特殊字符。有一种方法可以反解码:

decodeUnicodeSequenceToString(String unicodeSequence)

这里是 javadoc link. you can easily break unicode sequences string into single unicodes and store them like this or even convert them back as separate Strings and get your characters. Here is the link to the article Open Source Java library with stack trace filtering, Silent String parsing Unicode converter and Version comparison 关于库的解释

我写了一个小 python 函数来将 Gujarati 个词转换成 Syllables 的列表。我的代码受到此 Github 存储库 libindic/syllabalizer 的启发。

代码:

def syllabify_gu(text):
        signs = [u'\u0abe',
                u'\u0abf',
                u'\u0ac0', 
                u'\u0ac1', 
                u'\u0ac2', 
                u'\u0ac3', 
                u'\u0ac4', 
                u'\u0ac5',
                u'\u0ac7', 
                u'\u0ac8', 
                u'\u0ac9',
                u'\u0acb',
                u'\u0acc',
                u'\u0a81',
                u'\u0a82',
                u'\u0a83',
                u'\u0acd'] 
        limiters = ['\"', '\'', '`', '!', ';', ', ', '?', '.']

        lst_chars = []
        for char in text:
            if char in limiters:
                lst_chars.append(char)
            elif char in signs:
                lst_chars[-1] = lst_chars[-1] + char
            else:
                try:
                    if char == u'\u0ab0' and len(lst_chars) > 0 and lst_chars[-1][-1] == u'\u0acd' and lst_chars[-1][-2] == u'\u0aa4': 
                        lst_chars[-1] = lst_chars[-1] + char
                    else:
                        lst_chars.append(char)
                except IndexError:
                    lst_chars.append(char)

        return lst_chars

syllabify_gu("સંગીત એ એવું પવિત્ર ઝરણું છે, જેનાં વહેતા તરંગોથી અંતરનાં તાર રણઝણી ઉઠે છે.")

输出:

['સં',
 'ગી',
 'ત',
 ' ',
 'એ',
 ' ',
 'એ',
 'વું',
 ' ',
 'પ',
 'વિ',
 'ત્ર',
 ' ',
 'ઝ',
 'ર',
 'ણું',
 ' ',
 'છે',
 ',',
 ' ',
 'જે',
 'નાં',
 ' ',
 'વ',
 'હે',
 'તા',
 ' ',
 'ત',
 'રં',
 'ગો',
 'થી',
 ' ',
 'અં',
 'ત',
 'ર',
 'નાં',
 ' ',
 'તા',
 'ર',
 ' ',
 'ર',
 'ણ',
 'ઝ',
 'ણી',
 ' ',
 'ઉ',
 'ઠે',
 ' ',
 'છે',
 '.']

查找古吉拉特语字符的 Unicode here