我的任务是计算输入中感知字符的数量.输入是一组 int(我们可以将其视为一个int[]),表示Unicode代码点.
不允许使用java.text.BreakIterator.getCharacterInstance().(我的意思是他们的公式是允许的并且是我想要的,但是编织它们的源代码和状态表让我无处可去>.<)
我想知道在给定一些代码点的情况下,计算字形集群数量的正确算法是什么?
最初,我认为我所要做的就是结合所有出现的:
U+0300 – U+036F (结合变音符号)
U+1DC0 – U+1DFF (结合变音符号补充)
U+20D0 – U+20FF (结合符号的变音符号)
U+FE20 - U+FE2F (结合半分)
进入以前的非变音符号.
但是我意识到在该操作之前,我必须首先删除所有非字符.
这包括:
U+FDD0 - U+FDEF
每个平面的最后两个代码点
但似乎还有更多事情要做.Unicode.org指出我们需要包括U+200C(零宽度非连接器)和U+200D(零宽度连接器)作为连续字符集(源)的一部分.
除此之外,它还讨论了更多的事情,但整个主题都以抽象的方式处理.例如,什么是对的代码点范围间距组合标记,韩文字符JAMO形成韩文音节?
有没有人知道在给定int[]代码点的情况下计算字素集群数量的正确算法?
我有一个像这样的印地文脚本文件:
3. ???? ?? ?????? ???? ?????? ??? ??????? ???
Run Code Online (Sandbox Code Playgroud)
我必须编写一个程序,为每个句子中的每个单词添加一个位置.因此,特定单词位置的每一行的编号应从括号中的1开始.输出应该是这样的.
3. ????(1) ??(2) ??????(3) ????(4) ??????(5) ???(6) ???????(7) ??(8) ?(9)
Run Code Online (Sandbox Code Playgroud)
上述句子的含义是:
3. India has a long and rich history.
Run Code Online (Sandbox Code Playgroud)
如果你观察'.'(这是一个完整的句子,相当于英语中的'.')也有一个单词位置,同样其他特殊符号也会有,因为我试图去英语 - 印地语单词对齐(自然语言处理(NLP)的一部分)所以完整的英语'.' 应映射到'.' 用印地语.串行nos保持不变.我认为逐字逐句阅读可能是一个解决方案.你可以帮我解决一下如何使用C++,如果它简单或者更容易,你可以通过其他一些编程语言建议其他方式,如Python/Perl ..?
问题是我能够使用C++获取我的英文文本的单词位置,因为我能够使用C++中的ASCII值逐个字符地阅读,但我不知道如何对印地文文本进行相同的操作.
所有这一切的最终目的是看看英文文本的哪个单词位置映射到印地语中的哪个位置.这样我就可以实现双向对齐.
感谢您的时间...:)
我正在尝试对梵文词进行音节化
धर्मक्षेत्रे - >धर्मक्षेत्रेdharmakeshetre - > DHAR麦SHET重
wd.split('?')
Run Code Online (Sandbox Code Playgroud)
我得到的结果如下:
['??', '??', '???', '??']
Run Code Online (Sandbox Code Playgroud)
哪个部分正确
我尝试另一个词कुरुक्षेत्र - >कुरुक्षेत्रेkurukshetre - >区鲁格她唱到tre
['?????', '???', '??']
Run Code Online (Sandbox Code Playgroud)
结果显然是错误的.
如何有效地提取音节?
python ×2
c++ ×1
devanagari ×1
diacritics ×1
java ×1
nlp ×1
perl ×1
python-3.x ×1
string ×1
text ×1
unicode ×1
utf ×1
utf-8 ×1