如何泛化特殊实体

How to generalize special entities

我们使用 Apache UIMA Ruta 来处理我们的文档。输入文档包含我们尝试识别并转换为注释层次结构的所有类型的模式。

我们将对结果做的事情之一是用链接装饰输入文本。为此,重要的是我们知道找到的注释的原始位置信息。

一些注释基于值列表。我们使用 MarkTable 来解决它们。

我们遇到的问题是输入文档可以包含不同种类的特殊实体。例如,文档还可以包含包含 &   𝌆 等实体的单词。这些也可以存在于将在值列表中查找的单词/句子中。

我们正在寻找一个选项来将所有这些类型的选项概括(转换)为正常的 "plain text" 格式,这样我们就不必添加所有类型的带有特殊实体的选项价值清单。

对文档进行预处理并将它们全部替换(例如使用 HTMLConverter 引擎)据我所知不是一个好的选择,因为这也会更改位置信息。 & 应该匹配 &,但仍被视为 5 号。

我尝试使用替换操作,它会向注释添加一个额外的 "replacement" 属性。当我将拦截器(方面)添加到注释 class 的 getCoveredText 和 return 替换而不是真实文本(如果可用)时,匹配将成功。但是如果替换文本包含间隔符(结束位置仍然与原始文本/第一个 RutBasic 相同),这会带来问题。

有什么解决办法的建议吗?

我通过为内容构建预处理器和 post 处理器解决了这个问题。

在预处理器中,我将文本片段替换为其他文本。例如 && 将被替换为正常的 &。在预处理时,我将每个替换细节存储在一个替换对象中,该对象将被添加到一个有序列表中。替换对象包含原始文本和长度差异(& 比单个 & 长 4 个字符)。

在使用 RUTA(和其他注释器)进行注释后,我将所有找到的注释值(文本)更正为原始值,并修复注释的位置信息(开始和结束),以便它们与原始值匹配内容。我在此过程中使用包含替换详细信息的列表。