某些象形文字语言中的文字计数器?

时间:2013-07-30 07:11:08

标签: c# ms-word word-count text-segmentation

是否有可用于某些象形文字语言计数的库(例如:中文,日文,韩文......)?

我发现MS Word可以有效地计算这些语言的文本。我可以在.NET应用程序中添加对MS Word库的引用来实现此功能吗?

或者还有其他解决方案可以达到这个目的吗?

1 个答案:

答案 0 :(得分:2)

  有没有可用于某些象形文字语言计数的库(例如:中文,日文,韩文......)?

<强>象形文字?不,他们不是。它们是逻辑字符,并没有那么微妙的区别。我相信一些母语人士可能会比我更好地解释这一点。

日文和中文文本由字符完全与西方语言组成,但可能一个字符。此外,他们不需要空格来分隔单词所以我们的区别字符/单词不能使用空格作为分隔符。

Word所做的是计算单词(假设它们将等于字符),你可以在你的代码中做同样的事情(只是不要忘记它是UNICODE,所以你不能计算字节数)计算字符。要计算真正的单词,你需要一个字典(因为你不能依赖空格)。

例如这些字符串:

  

这是一个示例文本

     

これは,サンプルのテキストです

将被计为8个字符和8个单词(中文),15个字符和15个日文单词。实际上它不是(例如在日语中,在罗马语音译时是5个单词)。此外,不要忘记在日语中他们有一个以上的字母表(其中一个系列是拼音)。

重点是什么? 你会计算什么?我们用来代表它们的单词音译(拉丁字符)?哪一个?单词计数会有很大的不同,它实际上会计算我们的概念(这就是为什么,我想,Word会计算字符数。)

那说现在尝试编写这段代码:

string text = "这是一个示例文本";
MessageBox.Show(text.Length.ToString());

它会显示8,就像Word一样(我们计算字符数),以字节为单位(假设UTF-8编码)为24.这里没有计算空格的意义。如果您计划在一个音译中计算单词,则需要使用外部库(这不是一件容易的事情),对于您想要支持的每种语言都是不同的(不知何故,它很容易自动检测语言,因为在日本人他们经常使用平假名/片假名字符)。哪一个?有很多这些,我不知道中文,但在日语中,流行的汉语汉字是Kakasi

韩语是一个完全不同的故事,它是一个完全不同于拉丁语的字母,但是字符(应该称为音节)可能由许多字母组成。同样,它们不需要空格,因此您不能依赖它们进行字数统计。它在某种程度上更复杂,因为在这里你甚至可能需要一本字典进行字符计数(否则你只需要计算音节)。