【问题标题】:regex for pos tagged text for extract location用于提取位置的 pos 标记文本的正则表达式
【发布时间】:2017-12-07 19:57:14
【问题描述】:

我正在使用 stanford pos tagger 来标记推文内容。我需要提取“金门大桥”或“tiburon blvd”等位置。我有一些检测位置的规则,即:

1.<NN>+ 
2.<DT>?<JJ>?<1> ----> <1>:it means the rule number 1
3.<CD>?<2>
4.<2> <CD>?
5.(3|4) <CC | PE> (3|4)

“+”号表示标签至少存在一个或 更多次,“?”符号表示存在标签零或 一次,“|”标志表示其中之一的存在 两个标签。 我们有名词(NN),限定词 (DT)、形容词 (JJ)、基数 (CD)、连词 (CC) 和来自 pos tagger 的所有格结尾 (PE)。

一个示例帖子标记句子:“这/DT翻倒/VBN油轮/NN in/IN marin/NN has/VBZ created/VBN a/DT huge/JJ jam/NN on/IN wb/NN 580/CD clear /JJ 对面/IN/DT Richmond/JJ san/NN 拉斐尔/NN 桥/NN &/CC 四/CD"

谁能帮我为java中的每条规则创建正则表达式?

【问题讨论】:

    标签: java regex pattern-matching stanford-nlp pos-tagger


    【解决方案1】:

    虽然可能有更好/更有效的解决方案,但这应该可行:

    1. (\w+/NN)(\s(\w+/NN))*
    2. (\w+/DT\s)?(\w+/JJ\s)?(\w+/NN)(\s(\w+/NN))*
    3. (\w+/CD\s)?(\w+/DT\s)?(\w+/JJ\s)?(\w+/NN)(\s(\w+/NN))*
    4. (\w+/DT\s)?(\w+/JJ\s)?(\w+/NN)(\s(\w+/NN))*(\s\w+/CD)?
    5. ((<3>)|(<4>))\s((\w+/CC)|(\w+/PE))\s((<3>)|(<4>))
    

    一点解释: (\w+/NN) 提取任意字符组合(至少一个),后跟正斜杠和“NN”(例如 tanker/NN)。如果我们将它与空格 (\s) 结合起来,我们可以提取任意数量的连续名词。

    对于第二条规则,我们添加两个可选部分,提取“.../DT”和“.../JJ”并将其与规则一结合。规则三只是添加了另一个可选部分,它提取“.../CD”并将其与规则二结合。对于规则四,我们将可选的“.../CD”附加到规则二。

    对于第五条规则,您必须将 &lt;3&gt;&lt;4&gt; 替换为相应的规则。否则看起来会有点复杂。中间部分提取“.../CC”或“.../PE”,我们附加和前置一个模式以匹配规则三或规则四。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多