本项目为一个基于c#和c++开发的中文写作辅助工具。可实现千万级字次的实时检索匹配。让写作像写代码一样可以“自动补全”。
1、首先需要拥有一些特定领域的简体中文语料数据。如果这些数据分布在很多文件当中,则需要将它们追加到一个文本文件中。
2、跑TxtPreprocessing.py这个脚本对步骤一中的数据进行处理,将其中除了汉字和个别标点符号意外的字符都去掉。其中src_path为语料的原始路径,dist_path为处理后的输出路径。不用我提供的脚本,用自己的方式来处理也可以,但需要保证最后输出的文件是GB18030编码的
3、跑MapPreprocessing.cpp,将步骤二中得到的数据作为输入。在这一步骤中,程序会将数据生成倒排表索引存储到文件中。其中src_data_path是原始路径,res_map_path为输出路径。
4、将“辅助写作”中的res_map_path改为步骤三输出文件的路径,并编译运行。
MapPreprocessing.cpp对原始语料进行全切分,并根据频率建立倒排索引,存储到map中,再将map中的数据写入文件。
“辅助写作”将MapPreprocessing.cpp生成的倒排索引读入内存,实现实时查找。
内存:为了实现实时检索,其内存消耗较为巨大。预处理阶段,千万级字次的语料内存占用峰值约为5GB,产生约1GB的倒排索引文件。实际运行阶段,倒排索引文件读入约占用内存3GB。
时间:预处理阶段,千万级字次的语料用时约10分钟。实际运行阶段,程序启动时需要读入索引文件,耗时约30秒。检索阶段为实时检索。
1、TxtPreprocessing.py是一个python脚本;MapPreprocessing.cpp是C++编写的预处理程序;“辅助写作”是一个由C#开发的图形界面程序。
2、“使用说明”中的步骤1、2、3其实都是数据预处理,可以根据自己的喜好自己写脚本实现,不一定非要用本项目中提供的脚本。
3、本项目所用的语料数据不方便提供,您可自行使用其它数据进行尝试。
项目运行演示视频:链接:https://pan.baidu.com/s/1QogEqIwmGTxn1NSEIjy9qQ 提取码:yq9e
本项目遵守AGPL3.0开源协议。商业合作可联系微信/QQ:654062779