如何检测文本中是不是发生了事件/动作?
Posted
技术标签:
【中文标题】如何检测文本中是不是发生了事件/动作?【英文标题】:How to detect if a event/action occurred from a text?如何检测文本中是否发生了事件/动作? 【发布时间】:2012-05-02 21:29:21 【问题描述】:我想知道是否有针对此的 NLP/ML 技术。
假设给定一组句子,
-
我看了电影。
听说这部电影很棒,一定要看。
买了电影票。
我在看电影。
如果我必须为这些句子中的每一个分配一个概率,即他们“实际上”看过这部电影,我会按 1、4、3、2 的降序分配。
有没有办法使用一些分类器或规则自动执行此操作?任何论文/链接都会有所帮助。
【问题讨论】:
【参考方案1】:除 1 外,其他陈述均未必然暗示此人已观看电影。他们本可以为其他人买票(3),也可能是在大厅外卖爆米花的人(4)。我认为没有任何聪明的系统可以在每个句子的行之间阅读并返回与您的直觉完全一致的答案(顺便说一句,这可能与其他人的同一句话不同)。
如果奇怪的是,这是您唯一关心的情况(如果您明确处理电影评论,这可能),那么可能值得您花时间将大量启发式拼凑在一起产生一个函数near 完全符合您对此的直觉。
否则,在这些句子源自的所有其他句子中寻找可用的上下文以找到相关线索。真正看过这部电影的人可能会评论他们喜欢它,对电影中的特定场景、角色和演员等发表意见。因此,如果文本中包含大量情绪高昂的句子,并且指的是电影中的单词和短语,那么这个人可能已经看过这部电影。如果很多都是将来时,那可能不是。
【讨论】:
【参考方案2】:这些是文本蕴涵中的常见问题。我会推荐你看一些论文。虽然他们的动机是文本蕴涵,但我相信您的问题应该比这更容易。
Determining Modality and Factuality for Textual Entailment
Learning to recognize features of valid textual entailments
其中一些建议应该可以帮助您决定排名时要考虑的一些功能/关键字。
【讨论】:
【参考方案3】:如果您使用的是特定域,例如“是否看过电影”,或者更笼统的“是否参加过活动”,则基本上是文本分类任务的一个案例。
NLP 中的常用方法是使用大量标记为已观看或未观看的句子来训练基于机器学习的分类器。最常用的特征是关键字的存在/不存在、bigrams(2 个单词的序列)和 trigrams(3 个单词的序列)。
既然你谈到了概率,事情可能会变得更复杂一些。正如 adi92 所指出的,在您的 3 个句子中,答案并不清楚。在训练数据中表示这一点的一种方法可能是,一个具有 0.3 概率 watched 的句子出现 3 次标记为 watched 和 7 次标记为 dn't watch。大多数分类器都可以轻松地将其输出转化为概率。
无论如何,我认为主要的困难是为任务创建一个训练数据集。
【讨论】:
以上是关于如何检测文本中是不是发生了事件/动作?的主要内容,如果未能解决你的问题,请参考以下文章