我如何计算Go-lang中的日语单词

时间:2014-07-04 14:39:52

标签: unicode go

通过Go-Tour,它给人的印象是支持开箱即用的Unicode。

计算不使用日语和中文空格等标准分隔符的单词在其他编程语言(php)中很痛苦,所以很想知道是否可以计算用日语编写的单词(例如:片假名)使用Go编程语言。

如果是,怎么样?

1 个答案:

答案 0 :(得分:1)

答案是。 “有可能使用Go-programming language计算用日语写的单词(例如:片假名)。”但首先你需要改进你的问题。

有人在阅读你的短语“像空格一样的标准分隔符”时,可能会认为字数统计是一个明确定义的操作。即使对于像英语这样的语言,它也不是。在短语“测试1 2 3测试”中,字符串“1 2 3”是否代表一个字,或三个,或零? “测试123测试”的答案是否有所不同?这句话中有多少个单词“测试<mytag class="numbers"> 1 2 3 </mytag>测试”?

有人可能也会相信日语有一个“单词”的概念,类似于英语,但有不同的句法惯例。这是不正确的 - 对于许多语言,如日语,中文和泰语。

因此,您必须首先通过在拉丁文脚本文本中为英语等语言定义“单词”来改进您的问题。

你想要一个基于间距字符存在的简单词汇定义吗?然后考虑使用Unicode TR 29 Version 4.1.0 - Text Boundaries, Section 4 Word Boundaries。这根据正则表达式和Unicode字符属性定义“单词边界”。本地化行业标准GMX-V, Word Boundaries section使用TR 29。

完成定义后,我相信您可以使用像unicodetext/scanner这样的Go包来实现它。我自己没有这样做。通过快速查看官方软件包列表,看起来现有的软件包没有TR 29实现。但是你的问题是询问它是否“可能”,而不是“已经通过官方包装实现”。

接下来,对于日语:你想要一个简单的词汇定义“单词”吗?如果是这样,Unicode TR 29提供它。他们说,

  

对于Thai,Lao,Khmer,Myanmar和其他通常不在单词之间使用空格的脚本,一个好的实现不应该依赖于默认的单词边界规范。它应该使用更复杂的机制,这也是断线所必需的。日语和中文等表意文字剧本更为复杂。如果韩文文本没有空格,则同样适用。但是,由于缺乏更复杂的机制,本附件中规定的规则提供了明确的默认值。

如果你想在日语中使用语言上复杂的“单词”定义,那么你需要开始考虑@Jhilke Dai,Sergio Tulentsev和其他贡献者提出的问题。您需要设计“单词”的规范。然后你需要实现它。我相信你不会在2014年7月的官方Go包中找到这样的实现。但是,我也相信如果你能设计一个明确的规范,那么在Go中实现它是“可能的”。

现在:这个回复中有多少个单词?你是怎么算他们的?