我想知道我是否可以使用自己的标记化/分段文档(以及我自己的词汇文件)作为create_pretraining_data.py
脚本的输入文件(git 源:https ://github.com/google-research/伯特)。
这个问题的主要原因是高棉语的分割/标记化与英语不同。
Original:
វាមានមកជាមួយនូវ
Segmented/Tokenized:
វា មាន មក ជាមួយ នូវ
我自己尝试了一些东西,并在运行create_pretraining_data.py
andrun_pretraining.py
脚本后设法得到了一些结果。但是,我不确定我所做的是否可以被认为是正确的。
我也想知道我应该用来验证我的模型的方法。
非常感谢任何帮助!
脚本修改
我所做的修改是:
1. 将输入文件制作成列表格式我的输入文件不是普通的纯文本,而是来自我的自定义高棉标记化输出,然后我将其制成列表格式,模仿运行示例英文文本时得到的输出。
[[['ដំណាំ', 'សាវម៉ាវ', 'ជា', 'ប្រភេទ', 'ឈើ', 'ហូប', 'ផ្លែ'],
['វា', 'ផ្តល់', 'ផប្រយោជន៍', 'យ៉ាង', 'ច្រើន', 'ដល់', 'សុខភាព']],
[['cmt', '$', '270', 'នាំ', 'លាភ', 'នាំ', 'សំណាង', 'ហេង', 'ហេង']]]
* 外括号表示源文件,第一个嵌套括号表示文档,第二个嵌套括号表示句子。与函数all_documents
内部的变量完全相同的结构create_training_instances()
这是我真的很怀疑的部分。为了创建我的词汇文件,我所做的只是从整个文档中找到唯一的标记。然后我添加核心令牌要求[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)
结果/输出
原始输入文件(在自定义标记化之前)来自随机网络抓取。
有关原始和词汇文件的一些信息:
Number of documents/articles: 5
Number of sentences: 78
Number of vocabs: 649 (including [CLS], [SEP] etc.)
下面是运行后的输出(它的尾端) create_pretraining_data.py
这就是我运行后得到的run_pretraining.py
如上图所示,我从中得到的准确度非常低,因此我担心我是否做得正确。