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

6 unicode go

通过Go-Tour,它给人一种很好的印象,即支持开箱即用的Unicode.

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

如果有,怎么样?

Jim*_*unt 1

答案是肯定的。它“可以使用Go 编程语言来计算日语(例如片假名)书写的单词数”。但首先你需要改进你的问题。

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

有人可能还认为日语有一个“单词”的概念,类似于英语,但具有不同的语法约定。对于许多语言来说,这是不正确的,例如日语、书面中文和泰语。

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

您想要一个基于空格字符的简单词汇定义吗?然后考虑使用Unicode TR 29 版本 4.1.0 - 文本边界,第 4 节单词边界。这根据正则表达式和 Unicode 字符属性定义了“字边界”。本地化行业标准GMX-VWord Boundaries部分,使用 TR 29。

一旦您有了定义,我相信您就能够使用 Go 包(例如unicode和 )来实现它text/scanner。我自己没做过这个。快速查看官方软件包列表,现有软件包似乎没有 TR 29 实现。但你的问题是问它是否“可能”,而不是“已经由官方软件包实现”。

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

对于泰语、老挝语、高棉语、缅甸语和其他通常不在单词之间使用空格的文字,良好的实现不应依赖于默认的单词边界规范。它应该使用更复杂的机制,这也是断行所需要的。日语和汉语等表意文字更加复杂。如果韩文文本不带空格,则同样适用。然而,在缺乏更复杂的机制的情况下,本附件中指定的规则提供了明确定义的默认值。

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

现在:这个回复有多少字?你是怎么数的?