我想知道是否可以将自己的标记化/分段文档(以及我自己的vocab文件)用作create_pretraining_data.py
脚本的输入文件(git源:{{3} }。
此问题的主要原因是,高棉语的细分/标记与英语不同。
Original:
វាមានមកជាមួយនូវ
Segmented/Tokenized:
វា មាន មក ជាមួយ នូវ
我自己尝试了一些操作,并在运行create_pretraining_data.py
和run_pretraining.py
脚本后设法获得了一些结果。但是,我不确定我在做什么可以被认为是正确的。
我还想知道验证模型所用的方法。
我们非常感谢您的帮助!
脚本修改
我所做的修改是:
1.以列表格式制作输入文件我的输入文件来自普通的高棉标记化输出,而不是普通的纯文本,然后将其制成列表格式,模仿了运行示例英语文本时得到的输出。
[[['ដំណាំ','សាវម៉ាវ','ជា','ប្រភេទ','ឈើ','ហូប','ផ្លែ'],['វា','ផ្តល់','ផប្រយោជន៍','យ៉ាង','ច្រើន','ដល់','សុខភាព']],[['cmt','$','270','នាំ','លាភ','សំណាង','ហេង','ហេង']]]
*外括号表示源文件,第一个嵌套括号表示文档,第二个嵌套括号表示句子。与all_documents
函数中的变量create_training_instances()
完全相同的结构
这是我真的非常怀疑的部分。要创建我的vocab文件,我要做的就是从整个文档中找到唯一的标记。然后,我添加核心令牌要求[CLS],[SEP],[UNK] and [MASK]
。我不确定这是否是正确的方法。
对此部分的反馈非常感谢!
3.跳过create_training_instances()函数中的标记化步骤由于我的输入文件已经与变量all_documents
匹配,所以我将183行跳到207行。我将其替换为按原样读取输入:
for input_file in input_files:
with tf.gfile.GFile(input_file,"r") as reader:
lines = reader.read()
all_documents = ast.literal_eval(lines)
结果/输出
原始输入文件(在自定义标记化之前)来自于随机网页抓取。
raw和vocab文件上的一些信息:
Number of documents/articles: 5
Number of sentences: 78
Number of vocabs: 649 (including [CLS],[SEP] etc.)
下面是运行create_pretraining_data.py
https://github.com/google-research/bert
这是我运行run_pretraining.py
如上图所示,我从中得到的准确性很低,因此我担心如果做得正确。