通过Go-Tour,它给人的印象是支持开箱即用的Unicode。
计算不使用日语和中文空格等标准分隔符的单词在其他编程语言(php)中很痛苦,所以很想知道是否可以计算用日语编写的单词(例如:片假名)使用Go编程语言。
如果是,怎么样?
答案 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。
完成定义后,我相信您可以使用像unicode
和text/scanner
这样的Go包来实现它。我自己没有这样做。通过快速查看官方软件包列表,看起来现有的软件包没有TR 29实现。但是你的问题是询问它是否“可能”,而不是“已经通过官方包装实现”。
接下来,对于日语:你想要一个简单的词汇定义“单词”吗?如果是这样,Unicode TR 29提供它。他们说,
对于Thai,Lao,Khmer,Myanmar和其他通常不在单词之间使用空格的脚本,一个好的实现不应该依赖于默认的单词边界规范。它应该使用更复杂的机制,这也是断线所必需的。日语和中文等表意文字剧本更为复杂。如果韩文文本没有空格,则同样适用。但是,由于缺乏更复杂的机制,本附件中规定的规则提供了明确的默认值。
如果你想在日语中使用语言上复杂的“单词”定义,那么你需要开始考虑@Jhilke Dai,Sergio Tulentsev和其他贡献者提出的问题。您需要设计“单词”的规范。然后你需要实现它。我相信你不会在2014年7月的官方Go包中找到这样的实现。但是,我也相信如果你能设计一个明确的规范,那么在Go中实现它是“可能的”。
现在:这个回复中有多少个单词?你是怎么算他们的?