grammar相关内容
Prolog 的 DCG 给我留下了深刻的印象,我能够以多快的速度生成适合特定语法的所有可能结构. 但我想将此搜索与其他约束结合起来.例如,定义一个复杂的语法并要求 Prolog 生成所有不超过 10 个单词的句子.或者所有不重复同一个词两次的句子. 是否可以将这样的额外约束添加到 DCG 语法?还是我基本上必须将 DCG 翻译回普通的 Prolog 子句并开始修改它们? 解决方
..
..
我开始使用NLTK库,我想检查一个英文句子是否正确与否. 示例: “他看到鲍勃" - 不正确 “他看到鲍勃" - 正确 我阅读了这个,但这对我来说很难.我需要一个更简单的例子. 解决方案 语法检查是 NLP 研究的一个活跃领域,因此目前还没有 100% 的答案(甚至可能不是 80% 的答案).最简单的方法(或至少是合理的基线)是 n-gram 语言模型(将 LM 概
..
这是一个 NLP 问题,我想知道我应该如何进行. 问题有多难?我可以用同义词替换这个词并检查语法是否正确吗? 解决方案 用同义词替换单词可能是首先要尝试的事情,但要注意不要错过多个单词的表达和习语.此外,请确保选择具有相同词性的同义词. 他们寻找一个好的解决方案 他们查看/盯着/...寻找一个好的解决方案 他们努力工作他们的工作/任务/......很难
..
我需要为我的一个项目解析一小部分英语,描述为具有(1 级)特征结构的上下文无关语法(example),我需要有效地做到这一点. 现在我正在使用 NLTK 的解析器,它产生正确的输出但速度很慢.对于我的约 450 个相当模糊的非词典规则和 50 万个词汇条目的语法,解析简单的句子可能需要 2 到 30 秒,这取决于结果树的数量.词法条目对性能几乎没有影响. 另一个问题是在开头加载 (25
..
给定一个 NLP 解析树,如 (ROOT (S (NP (PRP You)) (VP (MD can) (VP (VB say) (SBAR (IN that) (S (NP (PRP they)) (ADVP (RB定期))) (VP (VB catch) (NP (NP (DT a) (NN 阵雨)) (, ,) (SBAR (WHNP (WDT which)) (S (VP (VBZ))
..
阅读 NLTK 的书,不清楚如何从给定的句子生成依赖树. 本书的相关部分:关于依赖的子章节语法 给出了一个示例图,但它没有显示如何解析句子以得出这些关系 - 或者我可能遗漏了 NLP 中的一些基本知识? 编辑:我想要类似于 stanford parser 的功能:给定一个句子“我在睡梦中射杀了一头大象",它应该返回如下内容: nsubj(shot-2, I-1)det(elephan
..
如何在 Python 中检查一个句子是否有效? 示例: 我喜欢 Stackoverflow - 正确我喜欢 Stackoverflow - 不正确 解决方案 查看 NLTK.他们支持您可以用来解析句子的语法.您可以定义一种文法,或使用提供的文法以及上下文无关的解析器.如果句子解析,则它具有有效的语法;如果没有,那么就没有.这些语法可能没有最广泛的覆盖范围(例如,它可能不知道如何处理像
..
是否有现成的英语语法可以加载并在 NLTK 中使用?我已经搜索了使用 NLTK 解析的示例,但似乎我必须在解析句子之前手动指定语法. 非常感谢! 解决方案 你可以看看pyStatParser,一个简单的python返回 NLTK 解析树的统计解析器.它带有公共树库,并且仅在您第一次实例化 Parser 对象时(大约 8 秒)生成语法模型.它使用 CKY 算法,可以在不到一秒的时间内解
..
我最近开始为 Minecraft 的 mod Computer Craft 做一点 Lua.我一直对 javascript 着迷,我发现最有用的工具是 JS Lint.我的问题是,有没有像 JS Lint 这样的东西可以用来检查我的 Lua 脚本? 解决方案 Lua-Checker 将得到这份工作为你做了.另一个工具是 Lua Lint
..
我经常听到声称 C++ 是一种上下文敏感的语言.举个例子: a b(c); 这是变量定义还是函数声明?这取决于符号 c 的含义.如果c 是一个变量,则ab(c); 定义一个名为b 的 类型的变量一个.它直接用 c 初始化.但是如果 c 是一个 type,那么 ab(c); 声明一个名为 b 的函数,它接受一个 c 并返回一个 a. 如果您查看上下文无关语言的定义,它基本上会告诉您所有语法
..
这篇博文关于如何使用 Omega monad 对角枚举任意语法的有趣解释.他提供了一个示例,说明如何执行此操作,从而产生无限的字符串序列.我想做同样的事情,除了它不是生成字符串列表,而是生成实际数据类型的列表.例如, 数据 T = A |BT |时间 会产生 A, B A, C A A, C (B A) A... 或类似的东西.不幸的是,我的 Haskell 技能仍在成熟,在玩了几个小时
..
有没有办法找到一个句子的所有子句,这些子句仍然有意义并且至少包含一个主语、动词和一个谓语/宾语? 例如,如果我们有这样的句子:“下个月我将在奥斯汀的 SXSW 举办 NLP 研讨会".我们可以从这句话中提取以下有意义的子句:“我要去参加一个研讨会"、“我要去参加 NLP 研讨会"、“我要去 SXSW 参加 NLP 研讨会"、“我要在SXSW做一个研讨会",“我要在Austin做一个研讨会",
..
我正在阅读有关解析器和解析器生成器的文章,并在维基百科的 LR parsing -page 中找到了此语句: 可以使用 LR 解析器的某些变体来解析许多编程语言.一个值得注意的例外是 C++. 为什么会这样?C++ 的什么特殊属性导致它无法使用 LR 解析器进行解析? 使用google,我只发现C可以用LR(1)完美解析,但C++需要LR(∞). 解决方案 Lambda
..
在 ANTLR 中,我想定义这样的规则: 规则:( a b c | a c b | b a c | b c a | c a b | c b a ); 但在我的情况下,我有 10 条规则而不是 3 条,我想对这些规则进行置换,因此它变得非常不切实际.有没有什么方法可以在 ANTLR 中表达这一点而不必编写所有排列? 解决方案 我只会匹配任何 a、b 或 c 一次或更多: 规则:
..
我正在分析由 python 代码生成的“乐趣和利润"的 AST,我想要比“ast.dump"更图形化的东西来实际查看生成的 AST. 理论上已经是一棵树了,所以创建一个图应该不会太难,但是我不明白我该怎么做. ast.walk 似乎走的是 BFS 策略,而visitX 方法我真的看不到父级或者我似乎没有找到创建图形的方法... 好像只能自己写DFS walk函数了,有意义吗?
..
我无法理解以下示例中 Ruby 运算符的优先级: x = 1 &&y = 2 由于&&的优先级高于=,我的理解是类似于+和*> 运营商: 1 + 2 * 3 + 4 被解析为 1 + (2 * 3) + 4 它应该等于: x = (1 && y) = 2 然而,所有 Ruby 源代码(包括内部语法解析器 Ripper)都将其解析为 x = (1 && (y = 2)) 为什么?
..
AST(抽象语法树)、解析树和派生树这些术语在提到解析符合语法的文本的结果时被不同的人使用.假设我们正在谈论解析计算机语言,它们的差异是否足够小以至于我们可以互换使用这些术语?如果不是,我们如何正确使用这些术语? 解决方案 AFAIK,“派生树"和“解析树"是一样的. 抽象语法树 在计算机科学中,抽象语法树 (AST),或简称为语法树,是用编程语言编写的源代码的抽象句法结构的树
..
我正在尝试实现表达式处理语法(处理嵌套括号和其他内容).到目前为止,我有以下内容,但他们无法处理某些情况(成功/失败的情况出现在以下代码块之后).有人知道是怎么回事吗? 注意:varname += 和 varname = 只是 XText 中一些额外的 AST 生成助手.暂时不用担心他们. ...NilExpression 返回表达式:'零';FalseExpression 返回表达式:'
..
是否有公开可用的 ARM 统一汇编语言语法或解析器,如 ARM 架构参考手册 A4.2 本文档使用 ARM 统一汇编语言 (UAL).这种汇编语言语法为所有 ARM 和 Thumb 指令提供了规范形式. UAL 描述了助记符的语法和每条指令的操作数. 我只是对解析助记符和每条指令的操作数的代码感兴趣.例如,如何为这些行定义语法? ADC{S}{}{} {,} , , I
..