通过智能词汇提高语言模型性能
该项目旨在探索使用词性标签和命名实体对十亿单词语料库进行预处理,以创建“更智能”的词汇表。与单独使用语料库中的前 N 个单词相比,使用这些技术可以获得更好的困惑度分数。
有关处理及其对可获得的困惑度分数的影响的完整说明,请参阅使用更智能的词汇提高语言模型性能。
该项目包括脚本
该项目设计为就地使用,无需安装 pip。只需从 GitHub 下载源代码,设置配置选项并按顺序运行编号的脚本即可。请注意,此代码是为研究人员设计的,因此需要检查正在运行的脚本中的代码并根据需要修改选项以获得特定结果。
主目录中的脚本以数字为前缀,以指示运行它们的顺序。主目录中的大多数脚本都是一系列相对较短的关联库函数调用。在运行每个脚本之前,请务必将其打开并设置任何配置参数以获得您想要的结果。
多个脚本使用的全局配置选项在./configs/config.py 中设置。在运行下面的任何脚本之前,请务必进入此文件并修改数据的路径。
00_StanfordCoreNLPServer.py :使用配置文件./configs/snlp_server.py启动Stanford Core NLP解析器。服务器运行时脚本会阻塞。如果您愿意,可以手动启动服务器。该脚本只是为了方便起见。
10_ExtractUniqueSents.py :在解析之前从十亿字语料库中提取唯一的句子。文件顶部附近有一些有关如何下载和设置原始语料库的说明。
12_STParseBWCorpus.py :通过斯坦福解析器运行所有独特的句子。请注意,此步骤需要相当长的时间(可能是一整天),并且可以从多核处理器中受益匪浅。请参阅文件中有关运行时的注释。
14_RemoveDuplicates.py :是否第二次遍历数据以删除解析/规范化后出现的重复句子。
20_CreateEnglishDictionary.py :智能词汇创建所需。
22_CreateVocab.py :该脚本创建各种类型的词汇表。文件中存在一个大的 if/elif 块,供用户选择要创建的词汇类型。
24_IndexVocab.py :创建用于训练语言模型的索引语料库数据。这里同样有一个很大的 if/elif 块,需要由用户设置来选择要使用的词汇类型。
30_TrainBasicLM.py :设置并运行模型的训练。这里再次有一个语句块,允许用户选择要训练的词汇。此外,用户需要选择带有模型配置参数的文件。模型配置参数存储在 config 目录中,文件名为 L1_2048_512.py。
32_TestPerplexity :针对经过训练的模型运行困惑度测试。在脚本底部选择要测试的模型。
34_NextWordPrediction.py :允许用户输入句子的第一部分并调用模型来预测下一个单词。配置在脚本的主要部分中使用哪个模型。
部分代码改编自萨尔大学的语言模型工具包。请参阅 TF-NNLM-TK。
该代码部分基于 TensorflowPTB-LM 示例模型。