我在一个机器翻译项目中工作。为了继续我的工作,我需要识别句子的主语、动词、宾语。目前我正在使用斯坦福NLP解析器来分析这个句子。但我不知道如何提取SVO。我有什么想法可以考虑吗?
对我来说,这似乎很简单:主语和动词在语法分析中处于同一深度,宾语通常是动词短语中的第一个NP。也就是说,确定元素的语法状态并不一定是一项涵盖所有边缘情况的简单任务。
我认为如果你想实现对英语句子的全面分析,那将是相当困难的。首先,你需要一本字典,它能给出一个单词所有可能的词性。然后你将根据几个规则构建句子的结构。
一些最基本的规则如下:
NP(Noun Phrase): N(Noun),
Pronoun,
[any number of ADJP(Adjective Phrase)] + N,
NP + [any number of ADJP],
NP + CONJ + NP
ADJP(Adjective Phrase): ADJ(Adjective),
[any number of ADVP(Adverb Phrase)] + ADJP,
PREP(Preposition) + NP
ADVP(Adverb Phrase): ADV(Adverb),
ADV + ADVP
VP(Verb Phrase): Vi(Intransitive Verb),
Vt(Transitive Verb) + NP,
VP + [any number of ADVP],
VP + CONJ + VP,
[any number of ADVP] + VP
S(Sentence): NP(Noun Phrase) + VP(Verb Phrase),
NP + AUX_V(Auxiliary Verb) + VP,
VP(Verb Phrase) (<=imperative sentence),
S + CONJ + S
使用这些规则,可以分析相当多的句子,包括
My dog runs very fast.
=> ADJ N Vi ADV ADV
=> (ADJ N) (Vi) (ADV ADVP)
=> (NP) (VP ADVP )
=> (NP VP)
=> (S)
和
I do not really like snacks like chips or candy.
=> N AUX_V ADV ADV Vt N PREP N CONJ N
=>(NP)(AUX_V)(ADV)(ADV) (Vt) (NP) (PREP (NP CONJ NP))
=>(NP)(AUX_V)(ADV)(ADV) (Vt) (NP) (PREP NP)
=>(NP)(AUX_V)(ADV)(ADV) (Vt) (NP ADJP)
=>(NP)(AUX_V)(ADV)(ADV) (Vt NP)
=>(NP)(AUX_V)(ADVP ADVP VP)
=>(NP AUX_V VP)
=> (S)
但它仍然不能分析复杂的句子,比如:
He is the one who won the Nobel Prize in 2014.
或
It is computers that brought the biggest change to our lives in history.
你需要添加关于从句和连词的规则(比如“当”、“当”和“如果”)。你还需要添加关于不定式和动名词的规则。你仍然需要添加关于带两个宾语的动词的规则(比如“给予”和“告诉”),以及带宾语状态的动词(比如“看”、“似乎”和“得到”,还有“我让你生气了”中的“制造”)......
在你添加了英语中的所有规则之后,会有更复杂的事情需要处理。例如
They are hunting dogs.
(这个句子有两种可能的结构,因此产生了两种不同的含义:一种是“猎狗”是形容词,另一种是NP。)
或
She told me that she loved me, which was a lie.
(在这种情况下,“这是一个谎言”从句(ADJP)描述了“她爱我”的NP,但理论上该从句描述“我”(代词也是NP)或“她告诉我她爱我”的整个部分是可能的。程序必须能够以某种方式找出最有可能的是第一个。)
所以我想我要做的是根据字典和规则建立一个类似于图表的东西来表示可能的结构,同时对句子进行逐字处理,然后应用禁忌搜索来减少可能性,最后,我必须使用统计方法,或者以某种方式让计算机了解真实世界的情况,以便从剩下的几种可能性中选择最可能的结构。
顺便说一下,当我进入最后一个例子时,斯坦福解析器给出了一个错误的结构。它给出了“她告诉我她爱[我,这是个谎言]”。像这样,要使这类事情完美地工作并不容易。
在斯坦福解析器的文档中,给出了以下示例语句: 印度官员今天表示,印度有史以来最强的降雨导致金融中心孟买关闭,通讯线路中断,机场关闭,数千人被迫在办公室睡觉或在夜间步行回家。 这会产生解析树: [ROOT[S[NP[NP[DT The][JJS stress][NN rain][VP[ADVP[RB ever][VBN recorded][PP[IN IN][NP[NNP India]]]][VP[
我意识到完美地将主语名词短语和宾语名词短语从句子中分离出来是一个开放的研究问题,在这里不容易解释,但有没有一种聪明的方法(假设我已经有一个带有词性标记的句子)适用于大多数句子,或者至少适用于相对简单的句子?我知道,简单地假设第一个名词短语是主语是一个很好的近似,但在以介词短语开头的句子中(例如,“穿过空地,穿过小溪,跑过受惊的鹿”。),这是失败的。理想情况下,我想要一个能识别这个主题的东西。 作为
我需要提取句子中单词的关系。我最感兴趣的是确定主语、谓语和宾语。例如,对于下面的句子: 我想有: 斯坦福NLP能做到吗?我尝试了他们的注释器,但它似乎没有像我预期的那样工作?也许还有其他软件可以产生这个结果?
问题内容: 我创建的查询之一存在一个奇怪的“问题”。给定下一个查询: phpMyAdmin一直在引发有关没有名为“ LatestBookableTimestamp”的列的错误,即使我有一个由子查询检索的列,也就是该别名。我也尝试过使用tableprefix选择每一列。第八,这没有用。最终,我通过表别名选择了所有列,并为表指定了别名。一切都没有运气。 有人可以告诉我我在做什么错吗?我什至搜索了一些资
由于连接到不同的API,我目前正在开发一个工具,允许我阅读所有的通知。 它工作得很好,但现在我想用一些声音命令来做一些动作。 就像当软件说“一封来自Bob的邮件”时,我想说“阅读”或“存档”。 我的软件是通过一个节点服务器运行的,目前我没有任何浏览器实现,但它可以是一个计划。 在NodeJS中,启用语音到文本的最佳方式是什么? 我在它上面看到了很多线程,但主要是使用浏览器,如果可能的话,我希望在一
语音识别是以语音为研究对象,通过语音信号处理和模式识别让机器自动识别和理解人类口述的语言。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。语音识别是一门涉及面很广的交叉学科,它与声学、语音学、语言学、信息理论、模式识别理论以及神经生物学等学科都有非常密切的关系。语音识别技术正逐步成为计算机信息处理技术中的关键技术,语音技术的应用已经成为一个具有竞争性的新兴高技术产