识别句子中单词的上下文

Posted

技术标签:

【中文标题】识别句子中单词的上下文【英文标题】:Identifying the context of word in sentence 【发布时间】:2015-01-12 00:14:33 【问题描述】:

我创建了分类器来分类给定句子中的名词、形容词、命名实体类。我使用大型***数据集进行分类。

喜欢:

亚伯拉罕·林肯出生在哪里?

所以分类器会给出这个简短的结果 - word - class

在哪里 - 问题 Abraham Lincoln - 人物、电影、书籍(因为分类器可以在所有类别中找到 Abraham Lincoln) 出生-时间

泰坦尼克号什么时候上映?

什么时候-问题 泰坦尼克号 - 歌曲、电影、车辆、游戏(泰坦尼克号 分类在所有这些类别中)

有什么方法可以确定单词的确切上下文吗?

请看:

    词义消歧在这里无济于事。因为句子中可能没有附近的单词可以提供帮助

    使用 wordnet 或 sysnet 的 Lesk 算法也无济于事。因为它假设单词Bank lesk algo 的行为是这样的

    ======== 测试 simple_lesk ============

    测试 simple_lesk() ...

    背景:我去银行存钱

    感觉:Synset('depository_financial_institution.n.01')

    定义:接受存款并将资金用于借贷活动的金融机构

    使用 POS 测试 simple_lesk() ...

    背景:河岸上到处都是死鱼

    感觉:Synset('bank.n.01')

    释义:坡地(尤其是水边的斜坡)

这里的单词bank 建议为financial instituteslopping land。虽然就我而言,我已经得到了像Titanic 这样的预测,那么它可以是moviegame

我想知道除了Lesk algobaseline algotraditional word sense disambiguation 之外还有其他方法可以帮助我确定哪个类对于特定关键字是正确的吗?

泰坦尼克号 -

【问题讨论】:

如果第一个例子中的“born”被归类为“time”,为什么第二个例子中的“release”没有得到任何分类? @ChthonicProject:感谢您的评论。这背后的原因是基于特征的分类系统。时间类已经使用上下文表达时间的实体(如when , how long, duration, born 等)进行了训练。将released 识别为基于时间的事件还不够智能。半超级和非超级学习系统可能已经识别它 【参考方案1】:

感谢您使用pywsd examples。关于 wsd,还有许多其他变体,我在空闲时间自己编写代码。因此,如果您想看到它有所改进,请加入我的开源工具代码 =)

同时,您会发现以下技术与您的任务更相关,例如:

知识库人群 (http://www.nist.gov/tac/2014/KBP/) 其中标记/文本片段被分配一个实体,任务是链接它们或解决简化的问答任务。

知识表示 (http://groups.csail.mit.edu/medg/ftp/psz/k-rep.html)

知识提取 (https://en.wikipedia.org/wiki/Knowledge_extraction)

上述技术通常包括几个子任务,例如:

维基化 (http://nlp.cs.rpi.edu/kbp/2014/elreading.html) 实体链接 插槽填充 (http://surdeanu.info/kbp2014/def.php)

本质上,您要求的是一种用于语言/文本处理的 NP 完全 AI 系统的工具,所以我认为目前还没有这样的工具。也许是 IBM Watson。

如果您正在寻找要调查的领域,该领域就在那里,但如果您正在寻找工具,很可能维基化工具最接近您可能需要的工具。 (http://nlp.cs.rpi.edu/paper/WikificationProposal.pdf)

【讨论】:

以上是关于识别句子中单词的上下文的主要内容,如果未能解决你的问题,请参考以下文章

如何规范不同长度句子中单词的概率?

基于上下文无关文法的句子生成算法

情感分析到底是个啥

如何从表中提取上下文数据来训练自定义命名实体识别器?

学习观

识别包含单词的句子,并使用 str.contains 在列中显示该单词