准备工作
pip install gensim jieba markdown scikit-learn
gensim
: Doc2Vec 的核心库。jieba
: 中文分词库,处理中文文档必不可少。markdown
: 用于将Markdown文档转换为纯文本,以便Doc2Vec处理。scikit-learn
: 用于计算文档相似度。
步骤
- 数据预处理: 加载Markdown文档并进行预处理,包括分词、去除停用词等。
- 训练Doc2Vec模型: 使用预处理后的文档训练Doc2Vec模型,生成文档向量。
- 相似度计算: 使用训练好的模型计算文档之间的相似度。
- 结果展示: 展示相似度最高的文档及其相似度分数。
引入依赖
import os
import jieba
import re
from gensim.models.doc2vec import Doc2Vec, TaggedDocument
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
import markdown
根据输入的Markdown文档目录加载和预处理文档
目录如图所示
# --- 1. 数据收集与预处理 ---
def load_and_preprocess_markdown_documents(data_dir):
"""
加载指定目录下所有Markdown文档,进行预处理(去除Markdown语法、分词)。
假设每个子文件夹代表一个类别。
"""
documents = []
labels = []
doc_id_counter = 0
for category_name in os.listdir(data_dir):
category_path = os.path.join(data_dir, category_name)
if os.path.isdir(category_path):
print(f"Processing category: {
category_name}")
for filename in os.listdir(category_path):
if filename.endswith(".md"):
filepath = os.path.join(category_path, filename)
with open(filepath, 'r', encoding=