正则表达式 – 简单的短语识别
我希望识别简单的短语,例如
google calendar中发生的短语
但不是解析日历条目,而是我必须解析与财务,会计和待办事项相关的句子.所以例如我必须解析像这样的句子
我需要将信息单独标记为原因:’食品’,成本:50和时间:<昨天的日期> 我的问题是我是否会参加完整的自然语言处理 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行,它将文本分成句子并迭代它们. 一般来说,nltk是一个非常漂亮的软件,并且有很好的文档记录:我会看一下.其他答案包含非常有用的链接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |