栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 面试经验 > 面试问答

如何使用nltk正则表达式模式提取特定的短语块?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用nltk正则表达式模式提取特定的短语块?

首先,让我们看一下NLTK提供的POS标签:

>>> from nltk import pos_tag>>> sent = 'The pizza was awesome and brilliant'.split()>>> pos_tag(sent)[('The', 'DT'), ('pizza', 'NN'), ('was', 'VBD'), ('awesome', 'JJ'), ('and', 'CC'), ('brilliant', 'JJ')]>>> sent = 'The pizza was good but pasta was bad'.split()>>> pos_tag(sent)[('The', 'DT'), ('pizza', 'NN'), ('was', 'VBD'), ('good', 'JJ'), ('but', 'CC'), ('pasta', 'NN'), ('was', 'VBD'), ('bad', 'JJ')]

(注意:以上是NLTK v3.1的输出

pos_tag
,旧版本可能有所不同)

您实际上想要捕获的是:

  • NN VBD JJ CC JJ
  • 神经网络

因此,让我们用以下模式来捕捉它们:

>>> from nltk import RegexpParser>>> sent1 = ['The', 'pizza', 'was', 'awesome', 'and', 'brilliant']>>> sent2 = ['The', 'pizza', 'was', 'good', 'but', 'pasta', 'was', 'bad']>>> patterns = """... P: {<NN><VBD><JJ><CC><JJ>}... {<NN><VBD><JJ>}... """>>> PChunker = RegexpParser(patterns)>>> PChunker.parse(pos_tag(sent1))Tree('S', [('The', 'DT'), Tree('P', [('pizza', 'NN'), ('was', 'VBD'), ('awesome', 'JJ'), ('and', 'CC'), ('brilliant', 'JJ')])])>>> PChunker.parse(pos_tag(sent2))Tree('S', [('The', 'DT'), Tree('P', [('pizza', 'NN'), ('was', 'VBD'), ('good', 'JJ')]), ('but', 'CC'), Tree('P', [('pasta', 'NN'), ('was', 'VBD'), ('bad', 'JJ')])])

所以这就是通过硬编码“作弊”!

让我们回到POS模式:

  • NN VBD JJ CC JJ
  • 神经网络

可以简化为:

  • NN VBD JJ(CC JJ)

因此,您可以在正则表达式中使用可选的运算符,例如:

>>> patterns = """... P: {<NN><VBD><JJ>(<CC><JJ>)?}... """>>> PChunker = RegexpParser(patterns)>>> PChunker.parse(pos_tag(sent1))Tree('S', [('The', 'DT'), Tree('P', [('pizza', 'NN'), ('was', 'VBD'), ('awesome', 'JJ'), ('and', 'CC'), ('brilliant', 'JJ')])])>>> PChunker.parse(pos_tag(sent2))Tree('S', [('The', 'DT'), Tree('P', [('pizza', 'NN'), ('was', 'VBD'), ('good', 'JJ')]), ('but', 'CC'), Tree('P', [('pasta', 'NN'), ('was', 'VBD'), ('bad', 'JJ')])])

很有可能您使用的是旧标记器,这就是为什么您的模式有所不同的原因,但是我想您会发现您可以使用上面的示例捕获所需的短语。

这些步骤是:

  • 首先,使用
    pos_tag
  • 然后概括模式并简化它们
  • 然后将它们放入
    RegexpParser


转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/640168.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号