在处理以人类可读语言编写的文本时,通常第一步是标记化,其中我们有一个标记(单词)字典,我们将该字典中的每个子字符串折叠成一个标记。对于像英语这样的语言,字典是预先知道的。
就我而言,我想解析格式不基于任何人类语言的文件。我没有已知标记的字典;相反,我想学习这本词典。我确实有很多可以分析的样本数据。
给定许多示例文件,是否有生成字典的技术?
我希望出现在许多文件中的任何公共子字符串都是令牌的良好候选者,因此一个明显的方法是查找所有公共子字符串并将它们添加到字典中。然而,一个复杂的问题是没有等效的空格来分隔标记,因此似乎可能需要进行一些过滤以避免将短语(多个标记的序列)视为新标记。例如,假设我们有一个很大的英语写作语料库,除了所有的空格和标点符号都被省略了,我们试图从中推断出一本英语单词词典。我们可以自然地推断出“ARE”、“THE”和“HER”是合理的标记,因为它们经常作为子字符串出现。到目前为止一切都很好。但是,我们不希望算法将“ARETHE”添加到字典中,即使“ARETHE”出现得相当频繁,因为“ARETHE”只是两个标记“ARE”和“THE”的串联。我怀疑有可能检测到这一点,因为“ARETHE”的频率并不比“ARE”和“THE”频率的乘积高多少,但我不确定。有没有干净的方法来处理这种皱纹?