我有一个文本数据列表,我想从中提取某些部分。我目前正在使用正则表达式来提取我想要的数据,但它开始变得非常复杂,因为每条记录都略有不同。有没有办法使用Rapidminer根据一些典型的例子“学习”正则表达式?
例如,对于以下每个记录,我想将文本24
和18
提取为两个新属性:
word 24 on line 18
Wrd 24 of Ln 18
Line 18, Word 24
Word 24 comes after word 22 on line 18 (not line 19)
我已经观看了所有文字处理视频,但没有一个显示如何做这类事情,我真的不知道从哪里开始。除了手动创建正则表达式之外,还有人可以提出一种方法吗?
答案 0 :(得分:0)
TXR language有一种简单的方式来表达模式匹配变体而没有神秘的正则表达式:
这是您的数据文件:
$ cat 13249396.dat
word 24 on line 18
Wrd 24 of Ln 18
Line 18, Word 24
Word 24 comes after word 22 on line 18 (not line 19)
这是txr脚本:
@(collect)
@ (some)
word @wd on line @ln
@ (or)
Wrd @wd of Ln @ln
@ (or)
Line @ln, Word @wd
@ (or)
Word @wd comes after word @nil on line @ln (@(skip)
@ (end)
@(end)
@(output)
@ (repeat)
@wd:@ln
@ (end)
@(end)
试运行:
$ txr 13249396.txr 13249396.dat
24:18
24:18
24:18
24:18
该脚本是通过从示例文件中获取案例并用特殊语法的位替换一些内容而开发的。