- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在从事机器翻译项目。我需要确定句子的主语、动词、宾语才能继续我的工作。目前我正在使用斯坦福 NLP 解析器来分析句子。但我不知道如何提取 SVO。有什么我可以考虑的想法吗?
最佳答案
如果你想实现对英语句子的全分析,我认为这会非常困难。首先,你需要一本字典,它给出了一个词所有可能的词性。然后你会根据几个规则构建句子的结构。
一些最基本的规则是这样的:
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.
您需要添加有关从句和连词的规则(例如“while”、“when”和“if”)。您还需要添加关于不定式和动名词的规则。您仍然需要为带有两个宾语的动词(如“给”和“告诉”)和带有宾语状态的动词(如“看”、“似乎”和“得到”,以及“制造”)添加规则在“我让你生气了。”)……
在添加了所有英文规则后,需要处理更复杂的事情。例如,
They are hunting dogs.
(这句话有两种可能的结构,从而产生两种不同的意思;一种是hunting dogs是ADJP,另一种是NP。)
或
She told me that she loved me, which was a lie.
(在这种情况下,“which was a lie”从句(一个 ADJP)描述了 NP“that she loved me”,但理论上该从句描述“me”(代词也是一个 NP)是可能的,或者整个部分“她告诉我她爱我”。程序必须能够以某种方式找出最有可能的是第一个。)
所以我想我会做的是根据字典和规则构建一个表示可能结构的图形,同时逐字处理句子,然后应用禁忌搜索来减少可能性,最后我会必须使用统计方法或以其他方式让计算机了解真实世界的情况,以便从剩下的几种可能性中选择最可能的结构。
顺便说一句,当我输入最后一个例子时,斯坦福解析器给出了一个错误的结构。它给了“她告诉我她爱[我,这是一个谎言]”。像这样,要让这种东西完美运行,并不容易。
关于java - 识别英语句子中的主语、宾语、动词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22452607/
我正在从事机器翻译项目。我需要确定句子的主语、动词、宾语才能继续我的工作。目前我正在使用斯坦福 NLP 解析器来分析句子。但我不知道如何提取 SVO。有什么我可以考虑的想法吗? 最佳答案 如果你想实现
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 10 个月前关闭。 Improve
我是一名优秀的程序员,十分优秀!