0

我正在用 Go 编写一个程序来生成我大学的犯罪报告。我遇到了一个障碍,我需要找出一个词是否是另一个词的复数形式。我先做一张犯罪地图

crimes := make(map[string]int)

然后,将罪行添加到地图中,出现次数为 int

for i := 0; i < len(feed.Items); i++ {
  crimes[feed.Items[i].Title[11:]]++
}

现在,当出现“武装抢劫(计数为 1)”和“武装抢劫(计数为 2)”之类的条目时,就会出现问题。我想检查一个词是否是另一个词的复数。在这种情况下,我想为“武装抢劫(计数为 3)”创建一个条目。我找不到这样做的包。有没有办法做到这一点?

4

1 回答 1

3

您正在寻找的是所谓的屈折。基本上,确定一个单词的各种形式,特别是单数和复数,或相反,这是一种黑色艺术。

为此有一些库,主要受 Ruby On RailsActiveSupport::Inflector系统的启发,例如参见https://github.com/jinzhu/inflection

另请参阅http://www.csse.monash.edu.au/~damian/papers/HTML/Plurals.html了解有关英语复数算法的非常有趣的读物。

于 2016-04-03T21:09:39.057 回答