2016-09-28 70 views
1

我想從多個標題標記標題級別(1級,2級,3級)。使用字體大小來自HTML的信息。首先,我把使用正則表達式的字體大小一樣Uima Ruta標題級別

"<span style=\"font-family:\'(.+?)\'"->1=fontfamily; 
"<span style=\"font-family(.+?)font-size:\'(.+?)\'"->2=font size; 

現在我需要使用的字體大小信息,並基於其標籤標題級別所有這些標題的大小進行比較。

輸入:

<span style="font-family:'Times New Roman'; font-size:'14pt'"><span class="">MATERIALS AND METHODS</span></span> 
<span style="font-family:'Times New Roman'; font-size:'12pt'"><span class="">Chemicals</span></span> 
<span style="font-family:'Times New Roman'; font-size:'10pt'"><span class="">HILIC-MS Profiling of Metabolites</span> 

回答

0

你可以做這樣的事情(使用UIMA魯塔2.5.0測試):

ENGINE utils.HtmlAnnotator; 
TYPESYSTEM utils.HtmlTypeSystem; 

CONFIGURE(HtmlAnnotator, "onlyContent" = false); 
EXEC(HtmlAnnotator, {TAG}); 

DECLARE FontFamily; 
DECLARE FontSize; 
DECLARE Heading (INT level, INT size); 

"<span style=\"font-family:\'(.+?)\'"->1=FontFamily; 
"<span style=\"font-family(.+?)font-size:\'(\\d+.+?)\'"->2=FontSize; 

INT size; 
RETAINTYPE(MARKUP); 

SPAN{-PARTOF(Heading) -> Heading, Heading.size = size} 
    <-{FontFamily # FontSize{PARSE(size)};}; 
# h:Heading{-> size = h.size}; 
h:Heading{h.size == size -> Heading.level = 1}; 
h1:Heading{h1.level != 0} # h2:Heading.level == 0 
    {h1.size>h2.size -> h2.level = (h1.level + 1)}; 
h1:Heading{h1.level != 0} # h2:Heading.level == 0 
    {h1.size==h2.size -> h2.level = h1.level}; 
RETAINTYPE; 

這些規則使用HtmlAnnotator,這需要一定程度的有效HTML。我需要將<html>標籤添加到文檔才能使其正常工作。

這些規則並不是最優的,只是一個起點。您應該使用的實際規則主要取決於用例以及它們需要的強大程度。

免責聲明:我是UIMA Ruta的開發商