我有一套半常规格式的文件。行通常用换行符分隔,每行的主要成分用空格分隔。一些示例是一组家具装配说明,一组目录,一组配方和一组银行对帐单。
问题是每组中的每个样本与其对等成员的不同之处在于使RegEx解析不可行:项目的数量可能在项目名称之前或之后,相同的项目之间可能有不同的名称,在行之间可能存在说明文本或注释等。
我使用分类器(神经网络,贝叶斯,GA和GP)来处理整个文档或数据集,但不是从文档中提取项目并在上下文中对它们进行分类。可以这样做吗?有更可行的方法吗?
答案 0 :(得分:2)
如果您的数据具有结构,可以说您可以使用语法来描述某些结构。 (通常,您使用语法来识别它们可以使用的内容,通常过多,并使用语法外检查来删除语法无法消除的内容。)
如果您使用可以运行并行潜在解析的语法,这会解析因为它们变得不可行而导致解析, 你可以直接解析不同的排序。 (GLR解析器可以做得很好)。
成像您有NUMBERS描述金额,NOUNS描述各种对象,VERBS用于操作。 然后,可以接受不同项目顺序的语法可能是:
G = SENTENCE '.' ;
SENTENCE = VERB NOUN NUMBER ;
SENTENCE = NOUN VERB NUMBER;
VERB = 'ORDER' | 'SAW' ;
NUMBER = '1' | '2' | '10' ;
NOUN = 'JOE' | 'TABLE' | 'SAW' ;
此示例非常简单,但它将处理:
JOE ORDERED 10.
JOE SAW 1.
ORDER 2 SAW.
它也会接受:
SAW SAW 10.
您可以通过添加actor必须是人的外部约束来消除此问题。
答案 1 :(得分:0)
有很多方法可以做到这一点。这是一个活跃的研究领域:information extraction。特别是从半结构化信息源中提取信息。