资讯专栏INFORMATION COLUMN

python实现成语找一找

enrecul101 / 3445人阅读

摘要:网上经常有些从个字里面找成语的小游戏,那么怎么用把成语组合找出来呢准备词典从网上下载一个成语的词典每行一个成语,保存成。

网上经常有些从N个字里面找成语的小游戏,那么怎么用python把成语组合找出来呢?

准备词典

从网上下载一个成语的词典、每行一个成语,保存成 word.txt。

代码实现

1.构建一个首字-成语的字典模型 predict.model

import pickle
from pathlib import Path

seq = Path("word.txt").read_text().split("
")
predict = {}
for word in seq:
    pre = list(word)[0]
    predict.setdefault(pre, [])
    predict[pre].append(word)
    
with open("predict.model", "wb") as f:
    f.write(pickle.dumps(predict))

2.实现成语查找的类

import pickle

class Idiom(object):
    def __init__(self, model_path="predict.model"):
        self.predict = pickle.loads(Path(model_path).read_bytes())
        
    def find(self, text):
        # 生成单字集合
        chas = set(text)
        for cha in chas:
            # 获取单字对应的备选成语
            words = self.predict.get(cha, [])
            if not words:
                continue
            for word in words:
                # 检查备选成语的字是否在单字集合中
                for i in word:
                    if i not in chas:
                        break
                # for循环执行完即备选成语由单字集合中的字组成
                else:
                     print(word)

3.现在就可以开始找成语啦

# 网上一般的成语游戏的备选字比这里少很多
s = """月光如流水一般,静静地泻在这一片叶子和花上。
       薄薄的青雾浮起在荷塘里。
       叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。
       虽然是满月,天上却有一层淡淡的云,所以不能朗照;
       但我以为这恰是到了好处——酣眠固不可少,小睡也别有风味的。
       月光是隔了树照过来的,高处丛生的灌木,落下参差的斑驳的黑影,峭楞楞如鬼一般;
       弯弯的杨柳的稀疏的倩影,却又像是画在荷叶上。
       塘中的月色并不均匀;但光与影有着和谐的旋律,如梵婀玲上奏着的名曲。""")
obj = Idiom()
obj.find(s)

找出来的成语有:

一天一地、别有风味、别有天地、恰到好处、落花流水、水流花落、
水天一色、流水落花、风轻云淡、月黑风高、高高在上、云淡风轻、
能上能下、不上不落、不上不下、不以为然、不差上下、名高天下、
名满天下、天下为笼、天高地下、参差不一

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41368.html

相关文章

  • 初识gauge自动化测试框架

    摘要:官方网站介绍是一个轻量级的跨平台测试自动化工具,可以使用不同的语言中编写测试用例的能力。本质上是一个行为驱动开发测试框架。支持测试报告可以生成格式的报告。 官方网站:https://docs.gauge.org/latest... 介绍: Gauge是一个轻量级的跨平台测试自动化工具,可以使用不同的语言中编写测试用例的能力。Gauge本质上是一个BDD(行为驱动开发)测试框架。如果你了...

    EsgynChina 评论0 收藏0
  • PHP包管理工具--Composer自动加载

    摘要:接触过的同学都知道使用作为项目的包管理工具但是并不是独有的是的包管理工具这两者的关系就像于于一样但是发现真正项目中使用还是比较少的所以这里这里写一遍文章介绍的使用帮助那些对于还是有点模糊的同学此文跟没有任何联系安装的方式就不讲了具体安装方式 接触过Laravel的同学都知道,Laravel使用Composer作为项目的包管理工具.但是Composer并不是Laravel独有的,Comp...

    xiaoqibTn 评论0 收藏0
  • 一个人,一个月,开发十款小程序,他是怎么做到的?

    摘要:几个月之内就开发了几十款小程序的开发者陈林,有着自己的解答。资深小程序开发者陈林,是小程序风口下的探索者之一,借助小程序无需安装,易于传播的特点,陈林以小游戏类目为核心,配合小程序间可相互跳转的特性。 showImg(https://segmentfault.com/img/remote/1460000020165110);你是一条产品经理,现在要出一个大型需求的方案,你会怎么做? ...

    muddyway 评论0 收藏0
  • 跨时区时间展示

    摘要:碰到一个问题,关于时间存储时区的问题。使用的是一个工具,可以使用,无奈存的时间是按照时区的。然后我就思考了,很多情况下,工作中默认的时区就在东八区,面向用户也在这里,完全没考虑其他时区的情况。 最近作为小白在学习 golang,只能说更多的踩坑,才能更好的学习。 打算使用 go-web 写点练手的内容。 碰到一个问题,关于 mysql 时间存储时区的问题。 使用的是 goose ...

    cheng10 评论0 收藏0
  • 跨时区时间展示

    摘要:碰到一个问题,关于时间存储时区的问题。使用的是一个工具,可以使用,无奈存的时间是按照时区的。然后我就思考了,很多情况下,工作中默认的时区就在东八区,面向用户也在这里,完全没考虑其他时区的情况。 最近作为小白在学习 golang,只能说更多的踩坑,才能更好的学习。 打算使用 go-web 写点练手的内容。 碰到一个问题,关于 mysql 时间存储时区的问题。 使用的是 goose ...

    android_c 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<