1

我正在尝试从许多标题中标记标题级别(级别 1、级别 2、级别 3)。使用来自 HTML 的字体大小信息。首先,我使用正则表达式来获取字体大小,例如

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

1 回答 1

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 的开发人员

于 2016-09-30T11:28:24.707 回答