Uima Ruta标题级别

时间:2016-09-28 11:32:05

标签: uima ruta

我试图从多个标题中标记标题级别(级别1,级别2,级别3)。使用字体大小来自HTML的信息。首先,我使用像

这样的正则表达式来获取字体大小
"<span style=\"font-family:\'(.+?)\'"->1=fontfamily;
"<span style=\"font-family(.+?)font-size:\'(.+?)\'"->2=font size;

现在我需要使用基于它的fontsize信息和标签标题级别来比较所有这些标题大小。

输入:

<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>

1 个答案:

答案 0 :(得分:0)

你可以这样做(用UIMA Ruta 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的开发者