网上经常有些从N个字里面找成语的小游戏,那么怎么用python把成语组合找出来呢?
准备词典
从网上下载一个成语的词典、每行一个成语,保存成 word.txt。
代码实现
1.构建一个首字-成语的字典模型 predict.model
import pickle
from pathlib import Path
seq = Path('word.txt').read_text().split('\n')
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, [])