【问题标题】:Creating a CFG from an English text in spacy?从 spacy 中的英文文本创建 CFG?
【发布时间】:2018-01-08 21:32:51
【问题描述】:

我一直在使用pyStatParser 库从文本中生成上下文无关语法,如下所示:

import stat_parser
p = stat_parser.Parser()
grammar = set()
for sentence in sent_tokenize("sometext"):
    grammar.update(set(p.parse(sentence).productions()))
print(grammar)

输入

"The quick brown fox jumps over the lazy dog"

输出

[NP+S -> NP VP, NP -> DT NN, DT -> 'the', NN -> 'quick', VP -> VB NP, VB -> 'brown', NP -> NP PP, NP -> JJ NN, JJ -> 'fox', NN -> 'jumps', PP -> IN NP, IN -> 'over', NP -> DT JJ NN, DT -> 'the', JJ -> 'lazy', NN -> 'dog']

从这个语法中,很容易推导出随机句子。 但是,这非常耗时,所以我查看了其他库,发现 Spacy。不过,我找不到像以前使用以前的库那样创建 CFG 的方法。

问题:我可以在 spacy 中创建 CFG 吗?如果没有,我如何使用这个库来分析文本的语法,然后从这个语法中推导出一个新句子?

【问题讨论】:

    标签: python nlp spacy


    【解决方案1】:

    Spacy 解析并创建依赖关系。依赖文法产生的树可以与上下文无关文法产生的树进行一对一的映射。然而,Spacy 并没有应用显式语法来解析。相反,它使用神经网络来决定如何根据具体情况放置依赖关系,因此,如果您想从大量生成的解析树中推导出上下文无关文法,您可能会发现结果是约束不足。构成解析器和标记器的神经网络已经在语料库上进行了训练,每个语料库都根据特定的语法进行了手工注释,因此返回源代码并获取习惯的语法可能是有意义的解析语料库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      相关资源
      最近更新 更多