2012-11-06 103 views
1

我有一個文本數據列表,我想從中提取某些部分。我目前使用正則表達式來提取我想要的數據,但由於每條記錄稍有不同,它開始變得非常複雜。有沒有一種方法可以使用Rapidminer根據一些典型示例「學習」正則表達式?使用rapidminer來獲取文本信息

例如,對於以下每個記錄我想提取文本2418成兩個新的屬性:

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

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 

該腳本是通過從示例文件中提取案例並通過特殊語法位替換一些內容來開發的。