# Project-QA **Repository Path**: Patrick_code/project-qa ## Basic Information - **Project Name**: Project-QA - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-01-08 - **Last Updated**: 2021-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 冬奥会领域问答机器人 ##### 2020-人工智能基础课程大作业 ### 小组成员 郭光曜、葛忠鑫、曹瀚云、宋昱 ### 仓库结构 ```bash │ .gitignore │ README.md │ ├─answer # 所生成答案的存放目录 │ answer_s_spd.csv # sklearn_spd.py生成的测试集答案(csv格式) │ answer_s_spd.json # sklearn_spd.py生成的测试集答案(json格式) │ answer_t_s_re_t.csv # sklearn_re.py生成的测试集答案(csv格式) │ answer_t_s_re_t.json # sklearn_re.py生成的测试集答案(json格式) │ ├─dictionary # 词典目录 │ common_dic.txt # 通用词词典(nz) │ dic_generate_helper.py # 自建词典辅助工具 │ game_dic.txt # 竞技项目词典(nz) │ name_dic.txt # 人名词典(nr) │ ├─gensim # 使用gensim库训练的模型目录 │ gensim_bow.py # 使用gensim库训练的BOW模型 │ gensim_tfidf.py # 使用gensim库训练的Tfidf模型 │ ├─glove # GloVe模型目录 │ glove_100_15_vectors.txt # Linux环境下预训练好的词向量 │ glove_100_5_vectors.txt # 命名格式:生成维度_词向量大小 │ glove_150_15_vectors.txt # 文件格式:txt │ glove_150_5_vectors.txt │ glove_50_15_vectors.txt │ glove_50_5_vectors.txt │ glove_g_scos.py # gensim库加载GloVe词向量,构建句向量后使用余弦相似度计算相似度的模型 │ glove_tf.py # gensim库加载GloVe词向量,对词向量进行idf加权(具有一定的效果) │ glove_train.py # 一种Windows下训练GloVe词向量的方法(建议还是在Linux下进行) │ Glove模型训练方法.md │ ├─sklearn # 使用sklearn库训练的模型目录(不同库训练效果稍微不同) │ key_words.txt # 关键词(自建) │ sklearn_cos.py # 使用sklearn库训练的tfidf模型,计算余弦相似度匹配 │ sklearn_re.py # 使用sklearn库训练的tfidf模型,采取了倒排索引、动态建立语料向量的方式 │ sklearn_spd.py # 使用sklearn库训练的tfidf模型,使用稀疏矩阵乘sparse_dot_topn # 返回匹配结果,模型效果与余弦相似度相似,速度上可能稍快一点 │ ├─stopwords # 停用词目录 │ baidu_stopwords.txt # 百度停用词表 │ cn_stopwords.txt # 中文停用词表 │ hit_stopwords.txt # 哈工大停用词表 │ README.md # 停用词目录简介 │ scu_stopwords.txt # 四川大学机器智能实验室停用词库 │ sichuan.txt # 四川大学机器智能实验室停用词库(?) │ stopwords.txt # 其他停用词库 │ ├─test # 测试集存放目录(详情请见使用方法) │ comp.py # 测试结果比较小程序 │ final_answer.csv # 测试集问题及答案(作为测试输入) │ test.csv # 测试集问题 │ ├─train_data # 训练集存放目录 │ correct_train_data.csv # 经处理后的用于训练的数据 │ mark_data1.xlsx # 原标注数据1.xlxs │ mark_data2.xlsx # 原标注数据2.xlxs │ process_raw.py # 训练数据处理工具 │ train_raw.csv # 合并后的原始训练数据(csv格式) │ train_raw.json # 合并后的原始训练数据(json格式) │ xlxs2json.py # 合并标注数据集工具 │ └─word2vec # 使用gensim库训练的Word2Vec模型目录 word2vec_g_scos.py # 使用gensim库训练的Word2Vec模型,转换为句向量后使用余弦相似度计算 word2vec_g_tf.py # 使用gensim库训练的Word2Vec模型, # 词向量使用idf加权(效果不显著,不如GloVe的效果) word2vec_train.py # 使用gensim库训练Word2Vec模型的方法,方法见内部注释 word2vec_wc.vector # 词向量生成结果 word2vec_wtf.vector ``` #### 最终作业 `/sklearn/sklearn_re.py` 是这次冬奥会领域问答机器人大作业的最终版本。 其在训练集(总计 13735 个问题)上的仅错了 17 个(因为严格对比,所以包含了一些可接受结果,实际错误更少),错误率低于 0.12%,在测试集(1732个问题上,依据小组自己查询得到的答案)错误 12 个(除去可接受结果,仅错 6个)。 注:验证结果为人工查找,可能不准确 ### 使用说明 本项目主要采用 csv 格式进行训练,并提供 `json` 输出和答案对比功能。 #### csv 文件格式 第一列为问题,名称为 `Q`,第二列为答案,名称为 `A`。 #### 训练集 `/train_data/correct_train_data.csv` 通过合并两组标注数据、去重和手动修正相关问题答案得到。 #### 测试数据 `/test/final_answer.csv ` 此测试集已经将问题和答案准备好。如需更换测试集,请将测试集转为 csv 文件,并按照上述csv 文件格式进行修正后使用(否则可能报错)。若 测试集文件名不为 final_answer.csv,请手动修改相应模型的 py 文件。 若不需要答案对比功能或无答案,请手动注释 compare 函数。 #### 输出结果 根据 py 文件名简写在`answer` 目录中查找。有 csv 和 json 两种格式输出结果。 其中 json 格式如下: ```json { "question":"哪一届冬奥会是亚洲举办的第一届奥运会?", "answer":"第十一届日本札幌冬奥会" }, ```