Skip to content

拼写纠错程序,涉及建词典、索引,动态规划算法,线程池池,线程同步,socket网络编程等

Notifications You must be signed in to change notification settings

june505/SpellCorrect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SpellCorrect

一、工作原理 拼写纠错 这是一个单词拼写纠错程序。分为客户端与服务端。

	客户端使用select多了IO实现,轮询监听用户输入
与服务端socketfd的输入。
	服务端使用线程池实现。服务端主线程负责接收用
客户端请求,将客户端请求词封装成任务,再用锁机制
将任务添加到线程池中的任务队列中。工作线程通过互
斥量和条件变量访问任务队列,实现线程同步,使得线
程池有序工作。
	每个工作线程独立完成自己的任务:到索引中查询
包含构成该单词的所有字母的单词的下标。为了避免重
复查询和计算,先将所用的字母对应的单词的下标集合
进行取交集,得到唯一的单词的下标的集合。再遍历集
合到词典中进行查找,同时计算单词与查询词的最小编
辑距离(Min Eidt Distance),将查找出的单词封装成
一个对象(包含单词、词频、最小编辑距离),放入优先
级队列中;
	优先级队列的排序规则是:优先最小编辑距离
如果编辑距离相同则按词频大小,如果编辑距离,词频大
小相同则按照单词在字典中按照26个字母的大小。

二、项目目的 我们的目的是让服务器给客户端返回一个编辑距离 最小的单词。即,如果词典中包含查询词,则返回正确 的单词,如果词典中没有该单词,则返回与该单词最相 近的单词。

三、涉及知识 1、使用动态规划算法计算单词间的最小编辑距离 2、多了IO模型,考虑高并发,可选用epoll 3、线程,线程池,线程同步 4、STL 5、C++11 fuction_bind实现多态。 6、Socket网络编程

四、编译方式 项目使用GNU make进行编译,makefile文件放置src 子文件夹中,其余工作仅仅需要在shellscpt中进行。 脚本运行顺序为: 1、./compile.sh 编译 2、./install.sh 安装 3、./clean.sh 清理 4、./run.sh 运行

如果已经编译与安装之后,仅仅需要运行run.sh文件即可。

About

拼写纠错程序,涉及建词典、索引,动态规划算法,线程池池,线程同步,socket网络编程等

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published