【问题标题】:Start/end of regex in TokensRegexTokensRegex 中正则表达式的开始/结束
【发布时间】:2016-10-31 14:13:41
【问题描述】:

假设我有以下代码:

TokenSequencePattern p = TokenSequencePattern.compile("[{tag:/JJ.*/}] [{tag:/NN.*/}]");
TokenSequenceMatcher m = tPattern.getMatcher(coreLabelList);
while (tMatcher.find()){
    List<CoreMap> matches = m.groupNodes();
}

我想在这里捕捉的是一个形容词后跟一个名词,即它必须以一个形容词开头,并且必须以一个名词结尾。例如,如果我有“漂亮的围巾”,它应该是匹配的,但如果我有“漂亮的带白点的围巾”,则不应该是匹配的。目前,上面的标记正则表达式与这两个短语都匹配。如何指定序列的确切开始和确切结束?

【问题讨论】:

  • 这给出了相同的结果

标签: java regex stanford-nlp


【解决方案1】:

你可以使用

TokenSequencePattern p = TokenSequencePattern.compile("[tag:/JJ.*/] [tag:/NN.*/]");

使用A round ball is bouncing very high in to the blue sky. 进行测试产生了round ballblue sky 子字符串。

要只获得整个字符串匹配,如果要使用Matcher#find(),则需要使用anchors(对于Matcher#matches(),锚是隐含的)。

因此,要仅将round ball 字符串匹配为形容词和名词的组合,您可以使用

TokenSequencePattern p = TokenSequencePattern.compile("^[tag:/JJ.*/] [tag:/NN.*/]$");

TokenSequencePattern p = TokenSequencePattern.compile("\\A[tag:/JJ.*/] [tag:/NN.*/]\\z");

^ / \A 代表字符串的开头(另外,\A 将始终匹配字符串的开头),$ / \z 匹配字符串的结尾(注意\z 将始终匹配字符串的末尾,而 $ - 即使您没有使用多行修饰符 - 也允许在其后添加换行符)。

注意:锚点是在 CoreNLP 3.7.0 上测试的。它们不适用于某些版本(例如,不适用于 CoreNLP 3.5.1,它会引发错误:Lexical error at line 1, column 1. Encountered: "^" (94), after : ""

【讨论】:

  • 这不是我需要的。我需要一个以形容词开头并以名词结尾的模式。在您的情况下,输入以限定符开头并以名词结尾,因此不应匹配。
  • JJ 代表形容词,而不是限定词。确定器指定为DT。见ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html"[tag:/JJ.*/] [tag:/NN.*/]" 产生所有出现的ADJ+space+NOUN(就像你写的我想在这里捕捉的是一个形容词后跟一个名词)。
  • 我知道 JJ 代表什么,您的示例 A round ball... 以限定词开头(“A”是限定词,而不是形容词)。我只想匹配以形容词开头并以名词结尾的短语,您的情况 - 以限定词开头,我不想捕捉“圆球”或“蓝天”,而是匹配整个测试短语开始和结束 POS 标签。
  • 这不是这个正则表达式的问题,而是你如何使用它。我与.find() 一起使用。如果您需要整个字符串匹配,请将其与matches() 一起使用。否则,您需要在模式周围使用锚点 ^$,即 "^[tag:/JJ.*/] [tag:/NN.*/]$"
  • 没错!锚是我需要的。但是,当我将锚点放在表达式 "^[tag:/JJ.*/] [tag:/NN.*/]$" 中时,它会抛出一个错误 - Lexical error at line 1, column 1. Encountered: "^" (94), after : "" 有什么办法可以使用 TokenRegex 来处理这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
  • 2016-02-06
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
  • 2010-10-05
  • 1970-01-01
相关资源
最近更新 更多