今天又忙活了一天,做了个同义词分析检索的一个搜索引擎的功能,简单分享下:
1.准备分词字典(之前已有)文件设为dic.txt设为和近义词表(现做或者从网络收集整理)文件设为tong.txt
(dic.txt每行的格式如下:计算机,23,n 其中23等数字为唯一值,记为关键词编码)
(tong.txt每行的格式如下:4,电脑,计算机 其中4等数字为唯一值,记为同义词编码)
2.分词和同义词表之间建立索引表,具体操作如下:(该步骤在一个项目中执行一次就可以长期重复使用)
2.1逐行遍历dic.txt,截取关键词,并用根据关键词逐行遍历tong.txt文件进行字符串匹配
2.2 以dic.txt中的某行 “计算机,23,n”为例,一旦计算机匹配到tong.txt 中"4,电脑,计算机"行中的“计算机”字符串,则停止tong.txt的遍历,并利用fseek函数回到tong.txt的遍历起点
2.3此时建立两者的索引联系,以“*”(符号任取)趣味标识符隔开。该例则为23*4(统一将关键词编码放在标识符之前,同义词编码放在之后);
2.4建立索引的目的,是为了降低内存,加快搜索速度。
3.建立好索引后,就是如何应用了。应用的方法如下(前提是已经做好了中文分词的关键词分词工作)
3.1获取分词关键词在分词词典dic.txt中的关键词编码值(在分词过程中就可以将该编码值保留着)。如此时关键词为计算机,对应编码值23;
3.2根据关键词编码值,遍历索引值(纯数字字符遍历很快的,轻量级)。如 “计算机”的编码23匹配到索引表中的“23*”,则锁定该行,获取*后的4,作为查阅关键词的索引值
3.3利用索引值迅速查阅其余同义词。如果设定行号和同义词编码一一对应,则可以比较方便的用以下方法检索:
3.3.1利用file(tong.txt)将该文件转换为数组读入某以为一维数组,记做a;
3.3.2直接获取a[4]就可以得到“4,电脑,计算机”这一完整的字符串
3.3.3经过字符串的截取和转换,最终能完整得到 “电脑”和“计算机”这两个关键词;
同义语义表的构造、索引和检索,思路共享成果图如上。by Bink Cheng
网友评论