短文本聚类是常用的文本预处理步骤,可以用于洞察文本常见模式、分析设计语义解析规范、加速相似句子查询等。本项目实现了内存友好的短文本聚类方法,并提供了相似句子查询接口。
pip install tqdm jieba
python cluster.py --infile ./data/infile \
--output ./data/output具体参数设置可以参考cluster.py文件内_get_parser()函数参数说明,包含设置分词词典、停用词、匹配采样数、匹配度阈值等。
参考search.py代码里Searcher类的使用方法,如果用于查询标注数据的场景,使用分隔符:::将句子与标注信息拼接起来。如我是海贼王:::(λx.海贼王),处理时会只对句子进行匹配。
TextCluster
|      README.md
|      LICENSE
|      cluster.py                    聚类程序
|      search.py                     查询程序
|      
|------utils                         公共功能模块
|    |    __init__.py
|    |    segmentor.py               分词器封装
|    |    similar.py                 相似度计算函数
|    |    utils.py                   文件处理模块
|
|------data
|    |    infile                     默认输入文本路径,用于测试中文模式
|    |    infile_en                  默认输入文本路径,用于测试英文模式
|    |    seg_dict                   默认分词词典
|    |    stop_words                 默认停用词路径注:本方法仅面向短文本,长文本聚类可根据需求选用SimHash, LDA等其他算法。
Text cluster is a normal preprocess procedure to analysis text feature. This project implements a memory friendly method only for short text cluster. For long text, it is preferable to choose SimHash or LDA or others according to demand.
pip install tqdm spacy
python cluster.py --infile ./data/infile_en \
--output ./data/output \
--lang enFor more configure arguments description, see _get_parser() in cluster.py, including stop words setting, sample number.
TextCluster
|      README.md
|      LICENSE
|      cluster.py                    clustering function
|      search.py                     search function
|      
|------utils                         utilities
|    |    __init__.py
|    |    segmentor.py               tokenizer wrapper
|    |    similar.py                 similarity calculator
|    |    utils.py                   file process module
|
|------data
|    |    infile                     default input file path, to test Chinese mode
|    |    infile_en                  default input file path, to test English mode
|    |    seg_dict                   default tokenizer dict path
|    |    stop_words                 default stop words pathFor other specific language, modify tokenizer wrapper in ./utils/segmentor.py.

