使用 ICU 进行分词
Word Segmentation using ICU
我正在使用ICU4C来音译CJK。我想知道是否有可能在ICU中进行分词,将中文文本拆分为一系列单词,根据某些分词标准定义。
例如,当我尝试音译时:
直接输出html代码而不是作为函数返回值代后处理
用
Transliterator* myTrans =
Transliterator::createInstance("zh-Latin",UTRANS_FORWARD, err);
UnicodeString str;
str.setTo("直接输出html代码而不是作为函数返回值代后处理");
myTrans->transliterate(str);
str.toUTF8String(st);
std::cout << st << std::endl;
我得到以下输出:
zhí jiē shū chū html dài mǎ ér bù shì zuò wèi hán shù fǎn huí zhí dài hòu chù lǐ
检查在线拼音工具似乎很好,但我的问题是 ICU 的音译字符一个接一个。不过,我正在寻找的是更像下面的文本(我不懂中文,所以下面的文本可能没有任何意义,但它应该证明我对哪种输出感兴趣):
zhíjiē shūchū html dàimǎér bùshì zuò wèihán shùfǎn huízhídài hòu chùlǐ
有人告诉我ICU 50能够分词,但我在他们的网页上找不到任何文档,在网上也找不到任何文档。想知道你们中是否有人在 ICU 中使用过分词或知道如何做,或者您是否有任何关于如何这样做的良好链接。
"基于字典的迭代器"不是一个不同的API。 只需使用适当的区域设置 ID 创建 ICU 分词迭代器即可。
ICU 中有一个 C/C++ 样本,ICU/源/样本/中断
此外,以下示例代码还显示了断字: http://source.icu-project.org/repos/icu/icuapps/trunk/iucsamples/c/s24_brkw/s24_brkw.cpp http://source.icu-project.org/repos/icu/icuapps/trunk/iucsamples/c/s23_brki/
大概是这样的:
BreakIterator *wordIterator = BreakIterator::createWordInstance(Locale("zh"), status);
UnicodeString text = "Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language.";
wordIterator->setText(text);
int32_t breakCount = 0;
int32_t start = wordIterator->first();
for(int32_t end = wordIterator->next();
end != BreakIterator::DONE;
start = end, end = wordIterator->next())
{
breakCount++;
}
delete wordIterator;
这是我从ICU的邮件列表中得到的回复:
"还有一个全新的在线演示正在进行中,它会进行分割并将您的文本拆分如下 - 当选择中文时。 希望这有帮助。
直接
输出
html
代码
而不是
作为
函数
返回
值
代
后
处理
这将解决我的问题,我需要音译此输出才能获得我想要的东西。
相关文章:
- 是默认情况下分配给char数组常量的值
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- 在C++中将变量 wstring 分配给 Char 数组
- 内存错误低于在C++年实现埃拉托色尼筛分时的预期
- 为什么我能够为阵列分配比计算机实际拥有的内存更多的内存
- 如何将内联匿名函数分配给C++函数指针
- SymSpellPlusPlus 中的分词
- 使用 C++ 的字符串到分词符
- Qt等效于提升分词器表达式/构造
- 使用 BOOST 分词器显示分隔符,并且不对引号中的字符串进行分词
- 使用 ICU 进行分词
- C++数学分词器/解析器错误
- 访问增强分词器的元素
- 提升分词器以将带引号的字符串视为一个标记
- 当我的分词器识别出令牌时,如何执行其他操作
- 分词器 - 预期聚合对象使用"{...}"进行初始化
- C++ 分词器变量中的错误'std::stringstream mystream'具有初始值设定项但类型不完整
- 错误的分词
- 分词错误-比较不同的单词在c++输入中出现的次数
- OpenCV 3.0分词故障(视觉词袋)