小编per*_*ate的帖子

从依赖树中提取(主题,谓词,对象)

我有兴趣从问题中提取三元组(主语,谓语,宾语).

例如,我想转换以下问题:

谁是美国总统的妻子?

至 :

(x,isWifeOf,y)∧(y,isPresidentof,USA)

x和y是我们必须找到的unknows才能回答问题(/ \表示连接).

我已经阅读了很多关于这个主题的论文,我想使用现有的解析器(如Stanford解析器)来执行此任务.我知道解析器输出2种类型的数据:

  • 解析结构树(选区关系)
  • 依赖树(依赖关系)

一些论文试图从解析结构树中构建三元组(例如,从句子中提取三重提取),但是这种方法似乎太弱而无法处理复杂的问题.

另一方面,依赖树包含许多相关信息以执行三次提取.很多论文声称这样做,但是我没有找到任何明确给出详细程序或算法的论文.大多数时候,作者说他们根据他们没有给出的一些规则来分析产生三元组的依赖关系.

有没有人知道任何有关从问题的依赖树中提取(主题,谓词,对象)的更多信息的论文?

rdf nlp stanford-nlp nlp-question-answering dependency-parsing

10
推荐指数
1
解决办法
1513
查看次数

确定单词是否是名词

给定输入词,我想确定它是否是名词(如果含糊不清,例如cook可以是名词或动词,则该词必须被识别为名词).

实际上我使用的是斯坦福分析器的POS标签器(我给它一个单词作为输入,我只从结果中提取POS标签).结果非常好,但需要很长时间.

有没有办法(在python中,请:)执行此任务比我实际更快?

python nlp stanford-nlp

8
推荐指数
1
解决办法
9334
查看次数

通过移除顶部或底部的方框来获得两堆相等高度的算法

假设你有两个堆,每个堆由N不同高度的盒子组成.您想要移除框以获得两堆相等的高度(如果可能).你不能删除不在堆的顶部或底部的盒子!例如,我们可以看到,如果我们移除下面的红色框,我们将获得两个相等高度的塔:

例

说明这个问题的另一种方法是:给定两个正数数组,是否有两个连续的子序列(每个数组一个),其总和相等?

这个问题看起来类似于这个,我们有一个A大小N和目标的数组t,我们想要找到一个连续的子序列,A其总和是t(相当于,我们有一堆盒子,我们想要删除盒子在顶部和底部,以获得一堆高度t).这个问题可以及时解决O(N).另一方面,上述问题有一个简单的O(N^2)解决方案(参见下面的答案),但是还有一个o(N^2)算法(O(N log N)例如)?

附录:盒子的大小是正整数.假设它们都是不同的(否则问题可以简单地解决O(N)).如果我们用H两个桩的总大小来表示,则有一个O(H log H)算法(参见下面的答案).因此,问题开始变得H更有意义N(一个有效的解决方案H = N^2将是一个良好的开端;)

arrays algorithm subset-sum

7
推荐指数
1
解决办法
656
查看次数

OCaml中的参数化类型

我尝试在OCaml中使用参数化类型,但它不起作用:(

在第一个文件"tree.ml"中我定义了类型:

type 'a tree =
  | Node of ('a tree)*('a tree) 
  | Leaf of 'a  
Run Code Online (Sandbox Code Playgroud)

在另一个文件"intTree.ml"中,我使用此类型来定义类型t:

open Tree
type t = int tree
Run Code Online (Sandbox Code Playgroud)

最后,我想在"main.ml"中的函数"size"中使用类型t:

open IntTree

type r = IntTree.t

let rec size tree = match tree with
  | Leaf k -> 0
  | Node (t1,t2) -> 1 + size t1 + size t2
Run Code Online (Sandbox Code Playgroud)

当我尝试编译这些文件时,我收到以下错误:

File "main.ml", line 6, characters 4-8:
Error: Unbound constructor Leaf
Run Code Online (Sandbox Code Playgroud)

如果我定义了"main.mli",它不会改变任何东西:

type r

val size : r -> int
Run Code Online (Sandbox Code Playgroud)

如果我把:

let rec size (tree …
Run Code Online (Sandbox Code Playgroud)

ocaml types parameterized

5
推荐指数
2
解决办法
1738
查看次数

证明 Sigma 类型的相等性

我定义了一个 Sygma-Type,它看起来像:

{ R : nat -> nat -> bool | Reflexive R }
Run Code Online (Sandbox Code Playgroud)

我有两个要素r1 r2 : { R : nat -> nat -> bool | Reflexive R },我要证明r1 = r2。我怎样才能做到这一点?

coq

2
推荐指数
1
解决办法
1098
查看次数