从若干多个 无序 的汉字中选择出其中的 成语 ,有什么高效地方法吗?

发布于 2022-09-06 13:07:41 字数 433 浏览 50 评论 0

python玩微信的成语猜猜看,要从24个汉字中选择出其中的成语

先说一下我的方案:将24个汉字的所有4字组合暴力穷举,分词(jieba),结果中存在4个字的,push到结果中,再一个一个试。

但是暴力穷举复杂度呈指数上升,另一个游戏叫成语连连看还是什么的,五十多个汉字,穷举不了了。。。

所以大家有什么好办法吗?

ps:jieba分词有时(比较频繁)会出现分不出来成语的情况,爬了个成语词典作为自定义词典,效果立竿见影,但仍然偶尔会出现 明明词典中有、但就是分不出来 的情况,诸位能告诉我是什么原因吗?(我的自定义词典没有词频和词性)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

靑春怀旧 2022-09-13 13:07:41

本问题已解决,解决方法是找了一个比较大的词库,取代之前的基于jieba分词的成语搜索。感谢大家的帮助。

ヤ经典坏疍 2022-09-13 13:07:41

基本思路:
假设你已经有了一个成语词典。
对于24个汉字,从第一个开始
{
找出该汉字开头的所有成语,对符合条件的所有成语,
判断第二个汉字是否包含在24个汉字中,对符合条件的依次判断第三个第四个,
找到则跳出循环。
}
这个最坏需要遍历24遍词典。
优化:
对于成语词典,假设是按拼音顺序排列的。
首先对于你的24个汉字,按拼音顺序排列一遍
从第一个开始,查找该汉字开头对应的成语,依次判断成语的第二三四个汉字。
如果找到则跳出,否则到下一个汉字,继续向下查找词典。
这个最坏只需要1遍。
其中有个问题,假如有一个汉字没有对应的成语怎么办,所以词典可能也要包含该汉字来做标记(低效率),或者对拼音比大小来判断该汉字是否已经掠过了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文