数据来自nonebot_plugin_handle中的answer.json,使用data_processing.py进行数据预处理,可用match_answer.py匹配成语。
音调,韵母,声母#排除1,排除2,…… (注意:此处为英文逗号,可以用英语句号“.”来代替下划线)
2___/3 4,u i/uan i _ u,q l y f/q _ y f#1,m
2.../3 4,u i/uan . . u,q l y f/q . y f#1,m
2___/3 4,,q l y f/q _ y f
2___/3 4,,q l y f
2___/3 4,,/q _ y f
2___/3 4,u i
2___/3 4,/uan i _ u
2434,u i
……
2434
解释:音调匹配。/前 定位匹配(绿色),/后 空格隔开不定位匹配(黄色)。
可以只输入 音调定位匹配,比如 2434 (但必须要输入 四个音调定位匹配)
解释:韵母和声母匹配。/前 空格隔开不定位匹配(黄色),/后 空格隔开定位匹配(绿色, 要输满四个,排除规则的bug目前我还没修)
可以只输入 不定位匹配,比如 u i
可以只输入 定位匹配,比如 /uan i _ u (要输满四个)
韵母和声母如果没有都可以不写(也不用输逗号了)。见输入示例。
但是 无韵母 有声母 必须中间用两个逗号隔开。比如 2___/3 4,,/q _ y f
解释:#后面是排除列表(顺序随意,逗号隔开)。(原理就是遍历 每个成语剩下的没匹配的部分 在不在排除列表里面,在就返回False)
出现第一个是黄的,第二/三/四个是灰的的情况 没法用排除(除非第一个已经是绿的 且 你对它使用了定位匹配了)
音调不定位匹配 要空格隔开。韵母声母定位匹配 要输满四个。无韵母 有声母 必须中间用两个逗号隔开。
而的er是韵母,所以声母是空着的
目前还没做拼音整体搜索和单字搜索,但数据预留好了可以轻松实现(我是真的不知道怎么写TODO)