louvain算法已过时,新的替代算法为leiden:https://github.com/vtraag/leidenalg data_process_final.py process_ori_data() --> 1. 清洗原始文件 sent_to_vec() --> 2. 得到BERT句向量(这里直接使用原生bert模型,如果能标注几百条进行fine-tune,效果更好) main.py cluster() --> 3. 得到相似度矩阵(阈值可以自行调整),并使用apriori进行关联挖掘(系数可以调整) cluster_arr_() --> 4. 进行聚类融合 get_res() --> 5. 得到最终结果 main_max_conn_graph.py:最大连通图 main_louvain.py:最大连通图分裂后的结果,应用louvain社区发现算法 main_max_conn_graph_apriori.py:先取最大联通子图,再做apriori main_apriori_max_conn_graph.py:先做apriori,再取最大联通子图 tips: * 最终结果生成在result目录下,可以按照步骤进行复现。初看正确率接近100%,由于时间紧迫,未进行任何模型调优,后续可以基于此代码进行优化,效果会更好。 * bert模型请下载:multi_cased_L-12_H-768_A-12,由于文件过大故不打包进源代码中。 export BERT_BASE_DIR=uncased_L-12_H-768_A-12 python3 extract_features.py \ --input_file=../data/test_questions.txt \ --output_file=../data/test_bert_vecs.txt \ --bert_config_file=$BERT_BASE_DIR/bert_config.json \ --init_checkpoint=output/model.ckpt-2313 \ --vocab_file=$BERT_BASE_DIR/vocab.txt python3 run_classifier.py \ --data_dir=../data \ --bert_config_file=$BERT_BASE_DIR/bert_config.json \ --task_name=comm100 \ --vocab_file=$BERT_BASE_DIR/vocab.txt \ --output_dir=output \ --init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt \ --do_train=True \ --do_eval=True \ --num_train_epochs=1 python3 run_classifier.py \ --data_dir=../data \ --bert_config_file=$BERT_BASE_DIR/bert_config.json \ --task_name=comm100 \ --vocab_file=$BERT_BASE_DIR/vocab.txt \ --output_dir=output \ --do_predict=True python3 /root/anaconda3/envs/tf-gpu1.15-py3.6/lib/python3.6/site-packages/tensorflow_core/python/tools/saved_model_cli.py \ show --dir export/temp-b'1635553889' --all