嗨我有大量的单词,我想检查重复项,并检查复数和其他单词结尾,并开始这将使它成为相同的单词。
所以我可以拥有单词,但也可以(单独列出)具有基本后缀或前缀的单词。或者将带有前缀后缀的单词分成两部分。
所以如果我有阵列......
[repaint, painting, paints, painter, house, car, boat]
它将返回......
[re paint, paint ing, paint s, paint er, house, car, boat]
答案 0 :(得分:0)
你想要的基础是一个词干算法。最常见的一个叫做Porter2,我有几个月前写的JS实现:
https://github.com/cwolves/stem
它并不能完全满足您的需求,特别是运行我得到的确切词语:
> token('repaint painting paints painter house car boat');
[ 'repaint', 'paint', 'paint', 'painter', 'hous', 'car', 'boat' ]
你会注意到前缀没有被剥离,也没有“保存”后缀('ing','s'等)。
但是,只有少数英文前缀可以预先剥离:'re','un','under','vice'等。完整列表:
http://en.wikipedia.org/wiki/English_prefixes
在大多数情况下,后缀可以通过取词干和最后一个词之间的差异来推断。例如“绘画” - “绘画”是指“ing”的后缀。
请注意,情况并非总是如此,因为porter2词干分析算法有时会为词干词添加额外的“e”。