【问题标题】:python re match, findall or search and then NLP (what to do with it?)python重新匹配,findall或搜索然后NLP(用它做什么?)
【发布时间】:2011-08-12 22:42:30
【问题描述】:

我开始编写将捕获部分句子“类型”的代码,如果它们符合条件,则启动一个处理“类型”的特定 python 脚本。我正在“发现”:) findall 对我正在做的事情更有效:

m = re.compile(r'([0-9] days from now)')
m.match("i think maybe 7 days from now i hope")
print m.match("i think maybe 7 days from now i hope")
None
f= m.findall("i think maybe 7 days from now i hope")
print f[0]
7 days from now

这似乎给了我正在寻找的句子的一部分。然后,我可以将其提供给例如 pyparsing 模块,该模块使用其示例日期时间转换脚本从类似的 NL 语句返回日期时间(我知道还有其他模块,但它们在可以处理的输入语句中是严格的)。
然后,如果句子的其他部分匹配另一个“类型”,例如,我可以在我的在线日记或托管网络应用程序中插入数据库。约会、截止日期等
我只是在这里修修补补,但慢慢地我正在构建一些有用的东西。这种结构/过程是否合乎逻辑还是有更好的方法/方式:这就是我现在问自己的问题。任何反馈表示赞赏

【问题讨论】:

    标签: python regex nlp


    【解决方案1】:

    m.match() 失败的原因是它希望匹配从字符串的开头开始。

    findall() 如果您希望字符串中有多个(非重叠)匹配项,那么这很有意义。否则,使用search() 方法(它将返回找到的第一个匹配项)。

    这一切都很好in the docs

    【讨论】:

      【解决方案2】:

      根据我对搜索界面的了解,您似乎需要大量的正则表达式来捕捉人们表达自己的各种方式。对于有多少的感觉,请参阅this writeup 上的“词汇问题”。

      所以,如果您只是在做日期/时间的事情,并且您将非常具体的操作与它们联系起来,这样会很糟糕,那么 RE 似乎是一个不错的选择。另一方面,如果您只是想检测“日期”表达式与例如一个“电子邮件”表达式或一个“便笺”表达式,那么也许值得一试 POS-tag 使用 NLTK 的句子并匹配词性级别的模式。

      【讨论】:

        猜你喜欢
        • 2014-10-28
        • 1970-01-01
        • 2012-02-28
        • 2013-07-14
        • 1970-01-01
        • 2019-07-28
        • 2014-11-22
        • 1970-01-01
        相关资源
        最近更新 更多