此项目仅用于教育目的,我们不应在现实世界中使用它。
作为助教,我总是要评审很多论文,这使我感到压力很大。因此,为了使自己免于重复工作,我建立了这个项目,并尝试使用机器学习来自动化评分过程。
与传统的基于神经网络的评分器相比,该评分器基于传统的机器学习技术XGBoost。其背后的原因是,与神经网络相比,XGBoost在资源和时间消耗方面更容易训练。
项目的基本想法很简单,我们可以从PDF文档中提取文本,然后使用Transformer从文档中提取文档嵌入向量。之后,我们可以使用XGBoost进行基于文档嵌入向量和文档评分的训练。
文档提取
由于隐私政策的缘故,在本项目中,我将不使用任何私人论文。因此,我从CNKI下载了几篇论文作为培训数据。我将从一流的中文期刊下载的论文标记为100分,而其他论文则标记为60分。
由于所有文档均为PDF格式,因此我们应先将这些文件转换为文本。通过使用“ textract”包,这相当简单。应该注意的是,当前的textract实现可能会在转换某些文档时引发错误。因此,我略微修改了源代码以避免该问题。可以在该项目的Github存储库中看到“ textract”的修改版本。
from tqdm import tqdm
import textract
def file_to_text(pdf):
text = textract.process(pdf)
return text.decode('utf8')
def data_preparation(train):
d = []
error = 0
for i in ['A','B']:
path = f'pdf/{"train" if train else "test"}/{i}'
for f in tqdm(os