Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/excing/find-roots-of-word
Find root-affix combinations of English words.
https://github.com/excing/find-roots-of-word
affix-rules english-dictionary
Last synced: 12 days ago
JSON representation
Find root-affix combinations of English words.
- Host: GitHub
- URL: https://github.com/excing/find-roots-of-word
- Owner: excing
- Created: 2022-08-23T10:13:31.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2022-08-27T07:59:24.000Z (about 2 years ago)
- Last Synced: 2024-08-01T19:53:43.638Z (3 months ago)
- Topics: affix-rules, english-dictionary
- Language: JavaScript
- Homepage: https://excing.github.io/find-roots-of-word
- Size: 472 KB
- Stars: 24
- Watchers: 1
- Forks: 2
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Find root-affixes of word
查找英语单词的词根词缀组合。
#### 查找规则
0. 直接返回小于等于长度为 2 的单词
1. 先获取单词原形,还原复数、比较级、过去式等单词形式
2. 再通过穷举获得所有的词根词缀组合
3. 然后去除不完整的组合,即该拼写组合 != 单词
4. 在所有符合条件的组合中,比较所有组合的长度,获取最小长度的组合,如果有多个,则记录多个最小长度组合
5. 在所有的最小长度组合中,优先获取单词根组合
6. 在剩余的组合中,取词缀和词根的长度差值最小的组合
7. 返回所有符合条件的组合#### 问题
1. 缺少必要的词根词缀,导致部分单词查找不到组合,比如 `wolf`, `strong`
2. 不准确
- 查找规则可能导致部分正确组合被过滤了
- 问题1的延伸
- 两个单词的组合词,比如 `honeyguide`
3. 多组合
- 依然有可能返回多种词根词缀组合,比如 `agitation`#### 改进
首先想加入词干提取([`Snowball`](https://snowballstem.org/)),用词干提取器代替单词原型表,优点:减少大量的无效组合,减少穷举次数,降低单词原型表带来的不确定性。
缺点:不准确,比如 `wolves` -> `wolv`,应为 `wolf`, `went` -> `went`, 应为 `go`。暂时还没有使用过其他词干提取器,不知道 `NLTK` 的 `WordNet` 会不会更好一点。其次是使原词与词干失去了关联属性,不过这点可以用单词原形表补充,如果有必要的话。
然后整理最简单词表,比如 `homeworker`,即是由 `home` 和 `worker` 两个单词组成,查找词根词缀时,拆分为两个单词查找,应更为妥当。
第三,添加词根词缀表示规则。比如,`^` 表示该词根词缀只能出现在单词开头,`$` 表示只能出现在单词结尾,其他详见 [root_affix_rule.csv](root_affix_rule.csv)。
最后是对词根词缀进行打分,这是一个粗糙的想法,未经过验证,而且如何打分,也没有什么好的思路。
#### 测试
项目测试地址:[Find root-affixes🍂 of word](https://excing.github.io/find-roots-of-word/index.html)
遇到错误或可能错误的词根词缀组合,可以通过页面右下角的 **Bad root-affixes, report to GitHub** 链接发送 Issue 到 [Github issues](https://github.com/excing/find-roots-of-word/issues)
#### 资源
- 项目中使用到的词根词缀表:[Roots and affixes](roots-and-affixes.csv)
- 项目中使用到的单词其他形式表:[Word exchanges](word-exchanges.csv)其中参考了以下开源项目的资源:
- [lnkDrop/Match-Root](https://github.com/lnkDrop/Match-Root)
- [skywind3000/ECDICT](https://github.com/skywind3000/ECDICT)感谢!
## LICENSE
MIT License
Copyright (c) 2022 excing