答案 0 :(得分:3)
(免责声明:我不熟悉文字处理扩展,如果条款和句子来自那些并且与字符串不兼容,我希望其他人可以帮助你。)
您可以使用String Manipulator节点从条款(我假设其中没有一个包含"
符号)创建规则,如下所示:
join("$yourSentenceColumn$ MATCHES \".*?\\Q", $yourTermColumn$, "\\E.*\" => TRUE")
如果您的条款包含引号符号(但您不希望它们匹配):
join("$yourSentenceColumn$ MATCHES \".*?\\Q", removeChars($yourTermColumn$, "\""), "\\E.*\" => TRUE")
这与我对previous question的回答类似,唯一的补充是\Q
和\E
quoting patterns。
在此之后,您可以在Rule-based Row Filter (Dictionary)或Rule-based Row Splitter (Dictionary)节点中将这些用作规则列。 (我这次没试过,但应该工作。)
答案 1 :(得分:0)
假设每个句子都是表格中的一行,下面是使用KNIME文本处理节点的方法:
Strings to Document
将文本转换为文档,将文本列指定给Title
。事先使用Constant Value
节点创建两个空字符串列,即一个用于Authors
,另一个用于Full Text
,并预先应用RowID
来创建一个包含ID的列(您可以方便地将Source
提供给前面提到的Strings to Document
节点; Bag of Words Creator
转换表格。Dictionary Tagger
的底部端口,同时将单词包连接到上一个。在此设置named entities to unmodifiable
非常重要。如果您需要它,也可以使搜索大小写不敏感。至于标签,只需将它们设置为NE
(命名实体)。Modifiable Term Filter
关注上一个节点 - 应该过滤掉可修改的术语,这样您就可以获得与您的词典完全对应的术语列表。但是,存在差异:现在每个术语都与发现它的每个文档相关联。Constant Value
创建一个包含数字1
的整数列,并将其命名为TermOccurs
。Document vector
将单词包转换回文档向量,将TermOccurs
指定为vector value
并使用As collection cell
选项。您现在应该有一个表格,其中只包含包含您任何条款的文档。Document Data Extractor
(选择Source
)获取每个文档的行ID,并使用RowID
进行分配。Reference Row Splitter
根据行ID将表拆分为两个:
如果您想再次使用字符串列,则可以在步骤1之前始终将表与原始列连接。
我还没有对上述工作流程进行测试,如果不能正常工作,请让我发布。另外,由于使用了标记器,您可能会遇到一些多项搜索问题。后者是使用文本处理节点时的主要挑战。