加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 简单的短语识别

发布时间:2020-12-14 05:36:43 所属栏目:百科 来源:网络整理
导读:我希望识别简单的短语,例如 google calendar中发生的短语 但不是解析日历条目,而是我必须解析与财务,会计和待办事项相关的句子.所以例如我必须解析像这样的句子 I spent 50 dollars on food yesterday 我需要将信息单独标记为原因:’食品’,成本:50和时间
我希望识别简单的短语,例如 google calendar中发生的短语
但不是解析日历条目,而是我必须解析与财务,会计和待办事项相关的句子.所以例如我必须解析像这样的句子

I spent 50 dollars on food yesterday

我需要将信息单独标记为原因:’食品’,成本:50和时间:<昨天的日期>

我的问题是我是否会参加完整的自然语言处理
在这些问题中给出并使用像GATE这样的东西

Machine Learning and Natural Language Processing

Natural Language Processing in Ruby

Ideas for Natural Language Processing project?

https://stackoverflow.com/a/3058063/492561

或者使用像AntLR之类的东西编写简单的语法并尝试识别它更好.

或者我应该真的很低,只需定义语法并使用正则表达式.

时间是一个约束,我有大约45 – 50天,我不知道如何使用像GATE这样的AntLR或NLP库.

首选语言:Python,Java,Ruby(不按任何特定顺序排列)

PS:这不是家庭作业,所以请不要这样标记.

PPS:请尝试用Facts回答为什么使用特定方法更好.
即使特定方法可能不符合时间限制,请随意分享,因为它可能会使其他人受益.

解决方法

您确实可以查看命名实体识别.根据您的问题,我了解您的域名定义非常明确,因此您可以识别与您相关的(少数?)实体(日期,货币,金额,时间表达式等).如果这些短语非常简单,你可以选择基于规则的方法,否则它可能会过早地过于复杂.

为了让自己在几秒内完成并运行,http://timmcnamara.co.nz/post/2650550090/extracting-names-with-6-lines-of-python-code就是你能做的非常好的例子.当然我不希望只有6行python的高精度,但它应该让你知道它是如何工作的:

1>>> import nltk
2>>> def extract_entities(text):
3...     for sent in nltk.sent_tokenize(text):
4...         for chunk in nltk.ne_chunk(nltk.pos_tag(nltk.word_tokenize(sent))):
5...             if hasattr(chunk,'node'):
6...                 print chunk.node,' '.join(c[0] for c in chunk.leaves())

核心思想是在第3和第4行:在第3行,它将文本分成句子并迭代它们.
在第4行,它将句子分成标记,在句子上运行“part of speech” tagging,然后将pos标记的句子提供给命名的实体识别算法.这是非常基本的管道.

一般来说,nltk是一个非常漂亮的软件,并且有很好的文档记录:我会看一下.其他答案包含非常有用的链接.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读