Dmi*_*ruk 19 algorithm nlp inflection lemmatization
我正在为ORM准备一些表名,我想将多个表名转换为单个实体名.我唯一的问题是找到一个可靠的算法.这就是我现在正在做的事情:
有谁知道更好的算法?
pax*_*blo 23
这些都是一般规则(和好的规则),但英语不是胆小的语言:-).
我自己的偏好是拥有一个转换引擎以及一组转换(令人惊讶的足够)来完成实际工作.
您将完成转换(从特定到一般),并在找到匹配时将转换应用于单词.
正则表达式因其表现力而成为理想的表达方式.示例规则集:
1. If the word is fish, return fish.
2. If the word is sheep, return sheep.
3. If the word is "radii", return "radius".
4. If the word ends in "ii", replace that "ii" with "us" (octopii,virii).
5. If a word ends with -ies, replace the ending with -y
6. If a word ends with -es, remove it.
7. Otherwise, just remove any trailing -s.
Run Code Online (Sandbox Code Playgroud)
请注意,规则的早期版本可能没有条目号4.但是,当我们发现"类型"的问题在98处被转换为"typ"时,我们在4处创建了一个更高优先级的转换以满足此需求.
当你发现英语产生的所有那些奇妙的异常时,你基本上需要保持这个转换表的更新.
另一种可能性是不要浪费你的时间与一般规则.由于表的名称相对有限,只需创建另一个表(或某种数据结构)types,该表将所有相关的多个表名(#6)映射到单个对象名(typ).
然后每次添加一个表格时,在单个"表格"中添加一个条目,这样你就可以将它单个化.
问题是基于一般规则,但英语(比喻)有十亿个例外......你用"鱼"或"鹅"这样的词怎么办?
此外,规则是关于如何将单数名词变为复数.反向映射不一定是可能的(考虑"免费赠品").