我需要以RDF格式表示句子。
换句话说,“John likes coke” 需要被自动表示为:
Subject : John
Predicate : Likes
Object : Coke
有人知道我应该从哪里开始吗?是否有任何程序可以自动执行此操作,还是我需要从头开始做所有事情?
回答:
看起来你想要句子的类型化依存关系,例如对于John likes coke
:
nsubj(likes-2, John-1)
dobj(likes-2, coke-3)
我不知道有什么依赖关系解析器可以直接生成 RDF。 但是,它们中的许多都会以标准化的制表符分隔的表示形式(称为CoNLL-X)生成解析,从 CoNLL-X 转换为 RDF 应该不会太难。
开源依赖关系解析器
有许多解析器可供选择,它们可以提取类型化的依存关系,包括以下最先进的开源选项:
- 斯坦福解析器 – 请参阅在线演示。
- MaltParser
- MSTParser
斯坦福解析器包含一个预训练的英语解析模型。 要获取类型化的依存关系,您需要使用标志-outputFormat typedDependencies
。
对于 MaltParser,您可以在此处下载英语模型。
MSTParser 包含一个小的 200 句英语训练集,您可以使用它来创建自己的英语解析模型。 但是,在此少量数据上进行训练会降低生成解析器的准确性。 因此,如果您决定使用此解析器,则最好使用此处提供的预训练模型。
上面链接的所有预训练模型都根据斯坦福依存形式主义生成解析(ACL论文和手册)。
在这三个中,斯坦福解析器是最准确的。 MaltParser 是最快的,此程序包的某些配置能够在 仅 8 秒内解析 1800 个句子。