【发布时间】:2011-03-14 02:04:12
【问题描述】:
我研究了一些简单的语义网络实现和解析自然语言的基本技术。但是,我还没有看到很多项目试图弥合两者之间的差距。
以对话框为例:
"the man has a hat"
"he has a coat"
"what does he have?" => "a hat and coat"
一个简单的语义网络,基于上述句子的语法树解析,可能如下所示:
the_man = Entity('the man')
has = Entity('has')
a_hat = Entity('a hat')
a_coat = Entity('a coat')
Relation(the_man, has, a_hat)
Relation(the_man, has, a_coat)
print the_man.relations(has) => ['a hat', 'a coat']
然而,这个实现假设文本段“男人”和“他”指的是同一个网络实体的先验知识。
您将如何设计一个系统来“学习”语义网络各段之间的这些关系?我习惯于基于创建一个简单的属性/值对训练集来思考 ML/NL 问题,并将其输入到分类或回归算法中,但我无法以这种方式制定这个问题。
最终,我似乎需要在语义网络之上叠加概率,但这会使实现变得非常复杂。在这些方面是否有任何现有技术?我查看了一些库,例如 NLTK 和 OpenNLP,虽然它们有很好的工具来处理符号逻辑和解析自然语言,但似乎都没有任何一种概率框架来将它们转换为另一种。
【问题讨论】:
标签: machine-learning data-mining nlp