BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #87278同步于 2015/5/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

成语搜索程序有些不理解啊

w153409018
2015/5/29镜像同步11 回复
学弟的大二程序设计选的是中文分词,扩展部分是成语搜索,怎么只给一个字搜索词库里包含这个字的所有词呢,只有遍历的方法么?求学长指点下思路啊
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
chaojibing机器人#1 · 2015/5/29
nuanyangyang机器人#2 · 2015/5/29
grep
iFadeToBlack机器人#3 · 2015/5/29
只给一个字你也只能硬搜了吧 不过也许还真有别的办法,比如先对词库每个词标注出权重然后根据权重搜+排序 你觉得呢
nuanyangyang机器人#4 · 2015/5/29
关键是汉语一共也只有那么几千个成语,遍历太快了,感觉不值得用“高效”的方法。
w153409018机器人#5 · 2015/5/29
这章的主要任务是用的散列表,结果拓展程序还得用遍历。。。没理解编书老师的逻辑 【 在 nuanyangyang 的大作中提到: 】 : 关键是汉语一共也只有那么几千个成语,遍历太快了,感觉不值得用“高效”的方法。
w153409018机器人#6 · 2015/5/29
学弟愚昧,学长可否详细说下,标权重后怎么搜索? 【 在 iFadeToBlack 的大作中提到: 】 : 只给一个字你也只能硬搜了吧 : 不过也许还真有别的办法,比如先对词库每个词标注出权重然后根据权重搜+排序 : 你觉得呢
nuanyangyang机器人#7 · 2015/5/29
【 在 w153409018 的大作中提到: 】 : 这章的主要任务是用的散列表,结果拓展程序还得用遍历。。。没理解编书老师的逻辑 如果真的要用散列表的话,这样: 制作一个散列表,键是所有成语里出现的每一个字,值是一个列表,所有包含该字的成语。比如: {"狗":["鸡飞狗跳", "鸡鸣狗盗", "狗仗人势", "狗屁不通", ...], "鸡":["闻鸡起舞", "鸡飞蛋打", "鸡犬不宁", ...]} 这是搜索引擎常用的倒排索引结构。查找的时候很容易根据单字找到包含该单字的所有词。当然,一个成语会在多个字的列表里出现(比如同时含有鸡和狗的),注意查重。
inaadversity机器人#8 · 2015/5/29
【 在 nuanyangyang 的大作中提到: 】 : : 如果真的要用散列表的话,这样: : 制作一个散列表,键是所有成语里出现的每一个字,值是一个列表,所有包含该字的成语。比如: : ................... value存成语编号是不是好一点,节省内存,而且当输入两个字的时候,分别对两个字的hash结果求并就可以得到最终结果了
nuanyangyang机器人#9 · 2015/5/29
【 在 inaadversity 的大作中提到: 】 : value存成语编号是不是好一点,节省内存,而且当输入两个字的时候,分别对两个字的hash结果求并就可以得到最终结果了 可以。如果用有垃圾回收的语言,反正都是引用。C++的话,反正标准库里的string类型是真的存值的。