掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 3273|回复: 12

[经验心得] [转载] 解谜英语语法

[复制链接]

该用户从未签到

发表于 2019-12-27 10:17:05 | 显示全部楼层 |阅读模式
解谜英语语法
我发现很多人仍然在为语法的枯燥繁琐而头痛。市面上好像不存在一本深入本质的语法教材。语法对于我来说已经早就不是问题,所以我萌生了写这样一篇文章的念头,帮助那些正在为学习语法而痛苦挣扎的人们。
这篇文章里包含了一些我自己保留多年的关于英语学习的秘密。我曾经想过把这写成一本完整的语法书,可是后来发现似乎一篇文章足矣。
句子的核心地位
直到几百年前,各个不同大陆上的人还从来没见过面,他们的语言里却不约而同出现了同样的结构:句子。这似乎说明句子的出现是一种自然规律,必然结果,而不只是巧合。
句子是人类语言最核心的构造。为什么呢?因为人和人说话终究是为了一个目的:描述一件事。
这件事也许只有一个字:吃!
也许可以很长:昨天晚上在上海某路边餐厅吃的鹅肝我吃遍全世界最好的
一个句子表达的就是一件事,或者叫一个“事件”。人与人交流,无非就是讲述一个个的事件。
许多人学英语,一来就背单词,背了很多单词,仍然写不出像样的句子来。只见树木不见森林,因为他们没有意识到句子才是最关键的部分。我们应该一开头就理解句子是什么,如何造出句子,而不是背单词。单词是树木,句子才是森林。
你需要的能力
所以掌握一门语言,基本就是要掌握句子。有了句子就有了一切。
掌握句子包括两种能力:
  • 能够迅速地造出正确的句子,准确地表达自己的意思。
  • 能够迅速地分析别人的句子,准确地理解别人的意思。
    ' S% ~1 k0 N$ `1 |0 z) Y# J
这两件事,一个是表达(发送),一个是理解(接收)。因为语言是沟通(或者叫“通讯”)的工具,所以它就只包含这两件事。
句子的本质
假设我们是原始人,还没有语言。我想告诉同伴“我吃苹果”这件事,该怎么表达呢?没有语言,那我可以先画个图嘛:
画图是很麻烦的,笔画太多不说,还可能有歧义。到后来,部落里的人聪明了一点,发明了“符号”这种东西,只需要几笔就能表示一个概念。他们给事物起了简单的符号名字,不再需要画图了。于是我们有了 I, apple 这样的词用来指代事物。有了 eat 这样的词,用来代表动作。所以画面变成这个样子:
后来干脆连框也不画了,直接写出这些符号来,这就是我们现在看到的“句子”:
I eat apples.
注意,虽然没有了上面的框图,这句话其实隐含了这幅图。写这个句子的人假设阅读者能够从一串符号还原出一个画面(或者叫结构)来。
有些人不能理解别人的话,看书看不懂,就是没能从符号还原出结构来。很多语法书列举出千奇百怪的“组合情况”,为的只是帮助你从这串符号还原出结构来。在现代语言学和计算机科学里面,这个过程就叫做“语法分析”(parsing)。
动词是句子的核心
那么,你觉得“我吃苹果”这个事,里面最关键的部分是什么呢?是“我”,“苹果”,还是“吃”呢?
稍微想一下,你也许会发现,关键在于“吃”这个动作。因为那是我和苹果之间发生的事件。这句话是说“吃”这件事,而“我”或者“苹果”,只是“吃”的组成部分。
用 eat 这个词,你不但可以表达“我吃苹果”,还可以表达“他吃面条”,“猫吃老鼠”之类的很多事情。于是,聪明一点的人就把 eat 这个词提取出来,做成一个“模板”:
这个模板就是所谓“动词”。eat 这个动词给你留下两个空,填进去之后,左边的东西吃右边的。
句子是语言的核心,而动词就是句子的核心。动词是事件的关键,比如 eat。
A eat B.
我们可以选择空格里的 A 或者 B 是什么。但不管怎么换,事情仍然是“吃”。为了描述方便,我们把 A 和 B 这两个空格叫做参数(parameter)。
这跟数学函数的参数(f(x) 里面那个 x)类似,也跟程序函数的参数类似。用数学或者程序的方式来表示这个句子,就是这样:
eat(A, B)
其中 A 和 B,是动作 eat 的参数。我只是打个比方帮助你理解,当然我们不会这样写英语。如果你完全不懂数学或者编程,可以忽略这个比方。
动词决定了它可以有几个参数,它们可以在什么位置,参数可以是什么种类的成分。比如 eat,它可以有两个参数。这两个参数只能是某种“物体”。你不能放另一个动作(比如 walk)进去,也不能放一个形容词(比如 red)进去。这种动词对参数的约束,叫做参数的“类型”。
在这个例子里,eat 可以接受两个“名词”(noun),所以它的两个参数,类型都是 noun。
你可能注意到了,I eat apples 里面的“I”并不是名词,而是“代词”。我解释一下。我这里所说的“名词”,是泛指一切物体以及指代物体的名字。所以我叫做“名词”的东西,也包括了代词,比如 I, you, he, she, it。如果你回想一下代词的英文是 pronoun,就会意识到它和名词(noun)之间的关系。
你会发现这种扩展的“名词”,会大大方便我们的理解。在本书中除非特别指明,所谓“名词”包括了代词,以及一切可以被作为名词使用的结构(比如从句,动名词)。
一个句子除了动词,好像就只剩下动词的参数了。动词对它的参数具有决定性的作用,动词就是句子的核心。准确理解一个动词“想要什么参数”,什么样的结构可以出现在参数的位置,就是造出正确句子的关键。
使用不同的动词可以造出不同的句子。所以要理解语法,你在应该把大部分精力放在各种各样的动词身上,而不是花几个月时间去背名词和形容词。我并不是说名词和形容词不重要,只是它们并不是核心或者骨架。
没有人会怪你不认识某种恐龙的名字,但如果你不能理解“I am not used to eating garbage food.” 是什么意思,那你可能就有麻烦了。
具有三个参数的动词
现在举个复杂点的例子:
Coffee makes me happy. (咖啡使我快乐)
这里的动词是 make。跟 eat 不大一样,make 可以接受三个参数:coffee, me, happy。它的模板可以表示为:
A make B C
& [6 u# r+ X8 [# q  l: C意思是:A 使得 B 具有性质 C。
比如 Coffee makes me happy,其中 A 是 coffee,B 是 me,C 是 happy
再来一个例子:
I told you everything. (我告诉了你一切)
这里动词 tell 也有三个参数,它的模板是这样:
A tell B C.9 p% J' v" B* O9 p7 y3 c
意思是:A 告诉 B 一件事 C。
比如 I told you everything,其中 A 是 I,B 是 you,C 是 everything
扯个淡:什么是宾补
说到这里我想扯个淡。初学者不知道什么是“宾补”的,可以跳过这一节,你不会损失什么。
在传统语法里,上面一节的 A make B CA tell B C 被看做是不同的语法现象,前者被称为含有“宾语补足语”,后者含有“双宾语”。可是在我们的框架下,这两者都不过是“接受三个参数的动词”。你只需要熟悉 A make B CA tell B C 是什么意思就可以了。
A make B C 里的 C 参数,其实就是传统语法叫做“宾语补足语”(宾补)的东西。然而跟传统语法不同,我不把它叫做“宾补”。这个成分没有任何特殊的名字和地位,而只是动词 make 的第三个参数。
有的动词可以有三个参数,有的动词只能有两个参数,有的动词只有一个参数。有的动词有时有两个参数,有时只有一个参数…… 就是这么简单,没有什么道理好讲,因为人们就是那么说话的。
人们约定俗成的说话方式,决定了 make 可以有三个参数,决定了这三者之间的关系:A 使得 B 变得 C。这就像数学的“定义”一样,是没有道理可讲的。你只需要多多练习,按照这个模板造句,知道它具体的意思就可以了。
模板“A make B C”,精确地决定了动词 make 可以产生的句型,定义了参数 A,B 和 C 之间的关系。你不需要把 C 叫做“宾补”就能明白这个句子在说什么。实际上,我认为“宾语补足语”,“补足语”这些术语,基本是子虚乌有的。它们来源于一种古板的观念,认为句子只有主谓宾三种成分,所以多出来一个东西,就只能叫做”补足语”了。他们没有意识到,有的动词可以有三个参数,就是这么简单。
如何造出正确的句子
我已经提到,对于人的语言能力,“造句”能力占了一半。很多人不知道复杂的长句是怎么造出来的,所以他们也很难看懂别人写的长句。
我并不是说一味追求长句是好事,正好相反。如果你能用短句表达出你的意思,就最好不要用长句。虽说如此,拥有造长句的“能力”是很重要的。这就像拥有制造核武器的能力是重要的,虽然我们可能永远不会用到核武器。
当然,长句不可能有核武器的难度。造长句其实挺容易。你先造出一个正确的短句,然后按照规则,一步步往上面添加成分,就可以逐渐“生成”一个长句。
这就像造一个房子,你首先打稳地基,用钢板造一个架子,然后往上面添砖加瓦。你可以自由地选择你想要的窗户的样式,瓦片的颜色,墙壁的材质,浴缸的形状…… 好像有点抽象了,我举个例子吧。
首先,我造一个最简单的句子。最简单的句子是什么呢?我们已经知道动词是句子的核心,有些动词自己就可以是一个句子。所以我们的第一个句子就是:
eat.
它适用于这样的场景:你在碗里放上狗粮,然后对狗儿说:“吃。” 当然,你体会到了,这句话缺乏一些爱意,或者你只是早上起来还比较迷糊,不想多说一个字,但它至少是一个正确的句子。
接下来,我们知道 eat 可以加上两个参数,所以我就给它两个参数:I 和 apples。
I eat apples. (我吃苹果)
这个句子适用于这样的场景:别人问我:“你一般吃什么水果呢?” 我说:“我吃苹果。”
有点单调,所以我再加点东西上去。
I eat Fuji apples. (我吃富士苹果)
Fuji 被我加在了 apples 前面,它给 apples 增加了一个“修饰”或者“限定”。它只能是富士苹果,而不是其它种类的苹果。
但我并不总是吃富士苹果,我有时不吃苹果。我想表达我只是“有时”吃富士苹果,所以句子又被我扩充了:
I sometimes eat Fuji apples. (我有时吃富士苹果)
你觉得这个 sometimes 是在修饰(限制)句子的哪个部分呢?它在修饰“我”,“苹果”,还是“吃”?实际上,它是在限制“吃”这个动作发生的频率,所以它跟 eat 的关系紧密一些,也就是说它是在修饰 eat,而不是 I 或者 apples。
以此类推,我们可以把它发展得很长:
I sometimes eat fresh Fuji apples from a nearby grocery store.
我有时候吃从附近杂货店买来的新鲜富士苹果。注意,虽然这句子挺长,但它的“骨架”仍然是 I eat apples.
我已经演示了一个长句是怎么“生成”的。先造一个短句,然后往上面添砖加瓦。正确的短句,按照规则加上一些成分,就成为正确的长句。从正确走向正确,这样你的语法就会一直是正确的。
当然,扩展句子的时候,你不能随意往上加东西,它们必须满足一定的规则才能正确的衔接。比如,你只能把 Fuji 放在 apple 前面,而不是后面,from 之类的词不可少。这就像造房子,你不能在该放窗户的地方放一道门,你不能用错配件,漏掉胶水。所谓语法,很多时候就是在告诉你这些部件要怎么样才能接的上,就跟做木工活一样。
如何理解句子
人与人交流的另一个部分就是“接收”。如果书上有很长一句话,你要怎么才能理解它呢?许多人看到长句就头痛,不知道该怎么办。这是因为他们不明白长句都是从短句扩展出来的,是有结构的。许多人理解长句失败的原因,在于他们总是从左到右,一个个的扫描单词。开头几个词感觉还认识,再多看几个词,就不知道是怎么回事了。
其实理解长句的方法,都隐含在了上一节介绍的造长句的方法里面。造句的时候我们先勾画出一个框架,然后往里面填修饰的成分。理解的时候如果有困难,我们可以用类似的办法。我们首先分析出句子的主干,把这个框架理解了,然后再把其它成分放回去,逐步把握整个句子的含义。
这个分析主干的过程,往往是“跳跃式”的,而不是“顺序式”的扫描单词。
比如之前的那个例子:
I sometimes eat fresh Fuji apples from a local grocery store.
你需要跳过修饰的成分,分析出句子的主干是短句“I eat apples”。如果你觉得一下子找不到主干,那么你可以挨个找到“修饰成分”,把它们逐个删掉,最后留下来的就是主干了。
注意,主干“I eat apples” 本身就是一个语法正确的句子,它满足所有的语法规则。于是你理解了它在说“我吃苹果”。然后你返回去再看几遍,逐渐加上细节,知道是什么样的苹果,从哪里买来的,什么时候吃。
漏掉或者误解了细节,你可能会误解一部分意思,但抓住了主干,你就不会完全不理解这个句子在说什么。
再次强调,每一个复杂的长句,里面都藏着一个非常短的,语法正确的短句。理解长句的关键,就在于找到这个核心的短句。
如何获得识别修饰成分,找到主干短句的能力,也在于你对具体的语法规则的理解。
句子的树状结构
之前,我们的原始人画了这样一个图:
它表示这样一个英语句子:
I eat apples.
很多人觉得后者是更简洁,更先进的方法。然而他们没有意识到,原始人的图片里,其实包含了关键而本质的东西。被转换成一串符号之后,里面的结构看不见了,反而需要费一些脑筋才能理解。这个简单的情况也许不能说明问题,等句子复杂起来之后,你就能体会到这一点。
从现代语言学,计算机自然语言处理(NLP)的观点看来,句子并不是一串符号,而是一个“树状”的结构。我们把这种树叫做“语法树”。
比如 I eat apples,其实表示的是下图这样的结构:
你可以把这个图看成是一棵倒着长的树。你把屏幕旋转 180 度,就会看到一棵树。树干 eat 发出两个“分支”,连接着它的两个参数:I 和 apples。为了表达清晰,我用红色圆圈来表示动词,而用蓝色方形表示名词。
动词 eat 需要两个名词参数,我们给它 I 和 apples,就成了一个完整的句子。再次声明,我这里的“名词”,包括了像“I”这样的“代词”。
扩展一棵树
之前我们通过扩充 I eat apples 这句话,得到了一个逐渐变长的句子。现在有了“语法树”的概念,我们来重新演示一下这个扩充句子的过程,看看它对应的语法树是怎么变化的。
首先,我们给苹果加上“富士”(Fuji)的修饰:
I eat Fuji apples.
Fuji 是对 apples 的修饰,或者说是它的“属性”,所以我们在树上把它和 apples 连在一起。
对于这种“修饰”成分,我们用绿色方框来表示。它们通过灰色箭头指向它们所修饰的部分。
接着,我们加上一个时间修饰 sometimes:
I sometimes eat Fuji apples.
由于 sometimes 是修饰 eat 动作的频率,我们把它指向 eat 动词节点。
最后那个复杂点的句子:
I sometimes eat fresh Fuji apples from a nearby grocery store.
它的语法树大概是这个样子:
之所以说“大概”,是因为我没有把“from a nearby grocery store”完全表示成一棵树结构。当我们觉得暂时没必要深入理解一个部分的时候,我们可以把它合在一起。所以“from a nearby grocery store”一起放在了一个节点里,表示对 apples 的另一个修饰成分。
树的作用
从上面的扩展过程,你也许发现了语法树在造句时用处。它帮助你快速的“定位”需要扩展的部分。如果你的句子只是一串字符,那么你得先用眼睛找到你需要的部分,把它和旁边的文字分离开。
在理解句子的时候,它的用处就更加明显了。树结构把句子之间相关的部分都直接连在了一起,所以你能清晰地看到它的结构。哪个词在修饰哪一部分,都一目了然。看看上面最复杂的那个句子,你可以一眼就能看出它的主干是什么:
对比一下原来短句的语法树,你发现虽然句子变长了,然而它的主干其实一点都没有变,仍然是 I eat apples。如果把句子写成一行,你就需要通过一阵子分析才能知道主干是什么。
这就是为什么我跟你讲语法树这个概念,因为它可以简化你对句子结构的理解。帮助你造句,帮助你理解复杂的句子。如果有长句看不懂,你可以使用语法树对其进行分解。
如何培养真正的语言能力
这一章我只是介绍了你需要的两种能力,可是如何培养这两种能力呢?其实它们两者是相辅相成的。造句的能力可以帮助你理解别人的句子,而阅读别人的句子,分析其结构,可以帮助你获得造出类似句子的能力。
所以我给你开的处方是这样:
  • 练习造句。每学一个动词,要先看例句,然后用它造出多个句子来。这样你就获得了灵活运用的能力。
  • 分析句子。看到一个复杂的句子,觉得理解有难度,你就把它抄下来。按照我介绍的“造句方法”,把它分解成主干和修饰成分。不久,你就会发现理解能力和造句能力都提高了。
    , U2 i# v6 j/ ~% [6 O
要注意的是,分析句子的时候,没必要去纠结一个句子成分“叫什么”,对应什么术语。比如它是表语还是宾语,还是宾补…… 这没有意义。
你可以理解任何英语句子,你可以成为很好的记者或者作家,却仍然不知道什么叫做“宾补”。你只需要造句的能力和理解句子的能力,而你不需要术语就能做到这两点。
另外,你分析的句子来源,最好是真正的,有良好风格的英文书籍,而不是来自中国人写的语法书。比如,你可以选一本通俗易懂的英文小说,比如《哈利波特》的第一部。或者你可以用英文杂志(比如《TIME》)上的文章。很有趣的是,中国人写的语法书里面,为了演示各种语法规则,经常是“没有困难,制造困难也要上”,造出一些外国人根本不会用的,容易让人误解的句子。这种句子,就算你分析清楚了,反而是有害的。这种丑陋的句子会破坏人的语感,而且让你觉得语法无比困难,打击你的信心。你受到影响之后,就会写出类似的,让外国人看了翻白眼的丑陋句子。
最后可能有人问,你这是提高实际的英语能力,可是我需要应付标准化考试,这样学能行吗?当然行,而且你做语法题的速度会非常快。托福,雅思,GRE 之类的考试,不可能变态到要你“找出句子里的宾补成分来”。实际上,题目里根本不可能出现“宾补”这类词。他们只会在某个位置留一个空,让你选择合适的内容填进去。也就是说,你不需要知道那个成分叫“宾补”,就能做对题。
实际上,做题的时候,你的头脑里根本不应该出现“宾补”这样的术语。具有了真正的英语能力,做语法选择题的时候,你会一眼就选对正确的答案,却说不出这道题在考你哪方面的能力。是时态呢,还是某种句子成分?我不知道,因为那毫无意义。我就是感觉其它答案都不“顺口”,我根本不会写那样的句子,而正确的选项一眼看起来就是“通的”。
所以不管是实际的交流还是做题,死抠语法术语都没有什么意义。你去问问每一个英国人,美国人,他们是怎么做对语法题的,你会得到同样的答案。你应该努力得到这种母语级别的能力,而不是记住一些纸上谈兵的术语。
(如果你觉得这篇文章有启发,可以点击这里付费
  Q% U/ k. {6 }( f$ g
1 \) n' o( N7 Y* R  a' E5 ]

本帖被以下淘专辑推荐:

  • TA的每日心情
    擦汗
    2023-2-15 04:29
  • 签到天数: 72 天

    [LV.6]常住居民II

    发表于 2019-12-27 16:31:42 | 显示全部楼层
    说实话,楼主你这套没多大用,语法想学就一定能学会,而且没准比用某些投机取巧的办法学得更好。
  • TA的每日心情
    擦汗
    2022-10-5 15:24
  • 签到天数: 614 天

    [LV.9]以坛为家II

    发表于 2019-12-27 18:40:18 | 显示全部楼层
            楼上文章感觉很好,讲解通俗易懂,逻辑清晰严密,不过似乎更适合于成人?
    6 M* X3 {0 G5 K. h& p8 C8 `, c  }) R        学习语法大概因人而异。传统语法只是在欠缺母语环境时帮助你快速掌握语言规律的拐杖。而掌握传统语法框架,尤其是句子部分,应该不是太难。然后就可以让步于阅读写作等实践了。至于其他语法细节,可以在实践中慢慢补充。
    + S. C0 d1 a; i- `& c8 X        这种在有一定基础时理性学习语法框架(尤其是句子部分),然后在阅读中积累对语言的感性认识,逐渐提升,大体也是上文所提倡的做法。

    该用户从未签到

    发表于 2019-12-27 11:07:17 | 显示全部楼层
    王垠的文章,不能说不好,确实讲得很通俗易懂嘛,只是……单单这些内容,就冠以「解谜英语语法」的标题,是否太……自大?(王垠的个性确实如此)0 F. S. c5 Z0 z, F' S5 o, y" H% q4 p
    , Q1 f: ]/ ], L; P
    我来举个未必恰当的例子:英語常用詞疑難用法手冊:
    6 \% j8 d3 q9 \4 k, Q; ~7 k+ J
    ( v1 R8 S7 k! X! p
    ■ not 所否定的范围! C) @! w9 \# z* Z! c

    0 {% [& m# U: u8 b9 y; Y就谓语和状语而言(暂时不论宾语),not 可能有三个不同的否定范围(参见 not... because...):/ {3 |& p5 X' ]: L* }! q

    8 b: Q) H5 T4 R" P0 x. R6 ~6 d( ^1) 只否定谓语动词,不否定谓语动词后的状语。
    6 K6 |* X0 ?- o5 c" f/ O
    6 \) L6 _5 \# F8 e) |0 XThe police didn't release his name because of his age. 由于他的年龄,警察没有公布他的名字。1 T* p$ \- [5 H' N0 u
    2) 不否定谓语动词,只否定谓语动词后的状语。' ~9 r' B$ o; n
    - b; H) G- R7 J& c" o2 F5 e, ]% H
    They had not gathered in this remote wooded area forty miles west of Moscow to relive the past. 他们到莫斯科以西四十英里这处偏僻的森林地带来聚集,并不是要重温过去。
    . V( e: e+ C8 n- y' p/ t- g* x
    9 y, |; u' D3 W3) 把谓语动词连同其后面的状语合在一起作为一个整体加以否定。
    9 c: V4 H: Z% }5 b  Q
    1 C% B8 r, \. [, y$ y3 OWorking in an open-source world is not without its hardships. There is no toll-free number to call when things don't work, as is the case with packaged software. 在一个源头开放的世界里活动,总是免不了遇到种种麻烦。东西不灵了,就不能像买来原装的软件那样有免费电话号码可以查询。
    ! F4 f( k) E1 L
    5 T6 b: K! r! L这里有时候会出现歧义。
    2 \- T' N( @2 \8 J! z! m7 k! [9 b8 X, b
    ……
    , ?. v( [3 Y$ @8 C/ s9 o! L
    英语常用词疑难用法手册的作者,特别爱讲传统语法术语,所以有的地方挺叫人头疼的。1 L- X1 F& g0 P3 f7 p

    " N9 {7 c" k# H5 N$ n不用谓语、状语这种术语,能不能把英语里复杂的现象、面貌说清楚?应该是可以的。问题是:
    ! U3 R! e$ l) Q1 j) Z- J. i/ @; x- [8 i6 C( U7 v7 ]% r$ w
    1. 市面上不少号称「超简单的、一看就明白的英语语法」,并不触及复杂的问题,高阶读者格外需要解惑的地方,「超简单」语法都不说' Z$ t. S0 ?- w9 v5 _9 ]) ?7 D
    2. 想要找足够丰富、全面的语法,很难抛弃传统术语。王垠是否有意写一本「深入本质」又「全面丰富」的语法教材呢?应该有人比我更了解他,可以说说
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-12-27 12:21:32 | 显示全部楼层
    klwo2 发表于 2019-12-27 11:07
    % j. {& X. E# z王垠的文章,不能说不好,确实讲得很通俗易懂嘛,只是……单单这些内容,就冠以「解谜英语语法」的标题,是 ...
    ' a1 r& J! `! D/ @) q' h
    方法都有其局限性,但在其适用的范围内可能完全够用。等在这个范围里,已经到了拔剑四顾心茫然的地步,可能就不仅满足于此,而会去寻求更深入更适合的方法或策略了。
    * f! L) e* w+ a4 xps:上面提到的open-source的翻译… 大概就体现了某种内容上的局限性吧…哈 大概王垠不会犯这种错误。
  • TA的每日心情
    开心
    2022-1-21 00:52
  • 签到天数: 699 天

    [LV.9]以坛为家II

    发表于 2019-12-27 12:28:58 | 显示全部楼层
    语法是对语言现象的总结,或者说是简化的模型,不同角度方式都是可以的。
    ) ~: U% W/ W+ D! {5 b语法一点不懂不行,但很多国人和语法书往往是失之于过深。
    ; e3 K! x( n0 [5 E推荐旋元佑的语法书,一开头介绍了5种基本句型,比此文全面但不过分复杂。
    . x& z& ?% m. {9 Z6 a2 t) H旋元佑文法 2019 介绍, z5 {' F0 X* T1 [
    https://www.pdawiki.com/forum/thread-35988-1-1.html?x=180507
    7 x' G8 s, N+ ~; {8 T. c
  • TA的每日心情
    奋斗
    2023-9-14 00:05
  • 签到天数: 1290 天

    [LV.10]以坛为家III

    发表于 2019-12-27 13:15:48 | 显示全部楼层
    看了上面的啥 “语法树”, 可以反映出作者的计算机背景;8 Y. V. [( j) O) o% [. `4 f

    2 z% R' q8 _3 {. w) b' `本来计算机语言的很多东西都来源于自然语言的概念,比方说 N.乔姆斯基 的生成理论就对计算机语言方面的影响和应用尤为明显;) h5 F0 R, y( y

    ' x; X9 c( R2 q/ G1 J作者又反过来,用计算机语言的思维反作用于自然语言... 至于对语言的学习有没有用?这全是主观意愿。  / r3 x  ?% A4 e

    + T& W+ U: P( ^2 A/ ^, Z个人感觉计算机语言的思维 可以 “来分析反作用于自然语言的部分” 恰恰是最初“自然语言输出给计算机语言的那部分子集”,那么大致就是用子集的属性来探讨研究自然语言这个大整体(部分---到---整体),这显然不合理吧?( m& R0 z4 c. y" k
    1 M( w" I$ X, L4 E% i( C6 I+ ]
    因为本身自然语言没有那么纯粹的规律,不像是计算机非1即0; 相比计算机,自然语言更像是一种模糊语言 .2 F1 [4 t4 q3 K" U' M: D1 `4 T

    $ r; T) q: j7 S/ i个人认为只能作参考,但是“揭秘” ?有待商榷。
      O, z- o; I- G  y% T# a1 o2 ?% Z7 r. O% F' i: G8 l9 w2 e0 b
    以上纯属个人观点,如有谬误,多多包涵!
  • TA的每日心情
    开心
    2018-8-8 03:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-12-27 14:15:36 | 显示全部楼层
    本帖最后由 喬治兄 于 2019-12-27 15:00 编辑
      B: C' M5 J) q0 Z" H/ P
    ; E9 D! _# U" ~( sBrother henices :3 n, E$ \" _8 H* T1 C5 U! T- o( |
    前陣子在圖書館亂翻統計類的書
    ! \, D( b# F$ V& Q0 N提及人工智慧, 後來發現人工智慧 N-Gram 和馬可夫鏈略有相關5 [/ j% E% _0 L
    在某種程度上應也是涉及 贝叶斯概率(英语:Bayesian probability
    & w% E. P; {( z9 X6 }- I" c/ c# S( w可視為數位電路的 State Machine + 馬可夫鏈 + 贝叶斯概率
    $ a& y2 |0 U- U' }. k樹狀結構 + 贝叶斯概率 ==>決策判斷模型
    6 g9 M9 `4 s; Z' t2 {; A: k7 JState Machine + 马尔可夫链蒙特卡洛(英语:Markov chain Monte CarloMCMC)方法 ==> 可分析風險值.......
    + c( ?$ n7 I' E7 O% K! g5 |3 ~然而在 ( Operations Research 作業研究 ) 國內可能叫作 運籌學 吧, 也都會提及以上的模型和方法
      K6 X- t) V. [3 Q4 A7 F2 X
    ) E( F* o# S& C9 A* I; r' YMCMC方法是使用马尔科夫链的蒙特卡罗积分,其基本思想是:构造一条Markov链使其平稳分布为待估参数的后验分布,通过这条马尔科夫链产生后验分布的样本,并基于马尔科夫链达到平稳分布时的样本(有效样本)进行蒙特卡罗积分。设为某一空间n为产生的总样本数m为链条达到平稳时的样本数则 MCMC方法的基本思路可概括为:$ E- j! N0 Y' G. m* u

      ! @' W. A+ J* I& ~1 B2 s0 l/ l9 h: T* N
    • 构造Markov链。构造一条Markov链,使其收敛到平稳分布;===>此無非就是二維或多維隨機變數的聯合動差......因計算頗為複雜因而一般採用 MCMC 摹擬可更為快速求得答案
    • 产生样本:由中的某一点出发,用i中的Markov链进行抽样模拟,产生点序列:
    • 蒙特卡罗积分。任一函数的期望估计为:
      ! t: f! G' Q" X2 v% b
    在采用MCMC方法时马尔科夫链转移核的构造至关重要,不同的转移核构造方法将产生不同的MCMC方法,当前常用的MCMC方法主要有两种Gibbs抽样和Metropo-Lis-Hastings算法。

    & G7 F: T) G, |* u2 R* e2 |https://zh.wikipedia.org/wiki/N%E5%85%83%E8%AF%AD%E6%B3%95" K6 ]0 L; q! j- H& ^2 T& d
    1 X  ^) q; w( T3 f* l5 `: E
    https://zhuanlan.zhihu.com/p/32829048
    ' U, v; r$ P4 h4 |0 Y$ [6 a6 X7 l  |' p( \" k. X
    https://medium.com/%E6%89%8B%E5%AF%AB%E7%AD%86%E8%A8%98/%E8%87%AA%E7%84%B6%E8%AA%9E%E8%A8%80%E8%99%95%E7%90%86-%E4%BD%BF%E7%94%A8-n-gram-%E5%AF%A6%E7%8F%BE%E8%BC%B8%E5%85%A5%E6%96%87%E5%AD%97%E9%A0%90%E6%B8%AC-10ac622aab7a- a" [2 J0 A0 y' p5 X; A
    5 y" Q& R2 c8 r9 O  H: h
    在學習自然語言處理 (Natural Language Processing) 時,經常會從語言模型 (Language Model) 開始學起,N-gram 便是一個入門常見語言模型。在這篇文章將帶你一探究竟 N-gram,並且利用 N-gram 實作一個模型,能夠像似搜尋引擎根據使用者的輸入推薦相關的字詞。
    6 C1 E/ U( N; F$ T: b& v語言模型 (Language Model) 與 N-gram 原理
    / _! d" |, x  V  \# ?. g. L9 _. A語言模型這 4 個字看似很博大精深,但是它僅僅指的就是「一個句子的機率」,在一個句子中的每個字,我們可以給它 P(S),代表每個字的機率。
    6 i* c( f. s- q假設我們給定一個句子「花博即將在台中__ 」,在留空的地方一般人都會想到該填入「舉行」,也就是當出現「花博即將在台中」,電腦能夠推斷出在這句話的後方出現「舉行」的機率最高。
    # {! y: `- \+ f% D1 ]! L' _7 Z所以我們假設第 i 個字會跟第 1 個字到 i-1 個字有關,這時你會發現如果這個句子很長,該機率計算量將會變得非常大,因此我們可以利用 Markov 假設,也就是當前的這個字僅僅與前幾個有限的字相關,如此一來,將不必追溯至第 1 個字,可以減少該機率的計算量:7 u9 R* `# L- M8 v; M3 ]

    3 ^0 V% ~4 I  m, ^3 ^當 m = 3 時,也就是第 i 個字與前 3 個字有相關,稱作 3-gram 或 trigram。用上述的例子舉例,我們要找一個字會令 P(w|在台中) 的機率最高,假設推算出 P(舉|在台中) 的機率最高後,再繼續找出另一個字讓 P(w|台中舉) 的機率最高。2 M! d  i! U4 P' o: B
    這時你會想該如何計算 P(w|在台中) 這種條件機率?我們可以使用最大似然估計 (Maximum Likelihood Estimation ),詳細推導可以看這篇 ????文章:  v/ A# W  z  a8 Q; a8 l
    4 k( T. F7 }, U/ s. S
    藉由計算字詞出現的次數來推估 N-gram 的機率,所以我們要做的事情是計算「在台中 w」與「在台中」分別出現的次數,再相除得到 P(w|在台中) 的機率。
    " C2 P, {5 S0 i  R# z: }% Q4 A& \從零開始實現 N-gram
    8 C" L% [& V+ v  H1 Y6 r2 b在這個範例中,我們會使用 Open data 作為資料集,並且利用 N-gram 訓練一個語言模型。
    3 ]( r$ g7 A$ V8 o我們會用到 Collections 中的 namedtuple 與 Counter。namedtuple 提供的功能是像 C 語言的 struct,能夠清楚表達一個資料的結構;而 Counter 則是能夠快速地幫助我們計算數量,例如 list 中每個元素的數量各有幾個。1 @; k6 F6 d0 @" w2 @$ D- M' ]
    9 l" h$ j' R: F  ?
    引入資料集8 A3 z0 ^$ p6 L) i; j& S; H, X
    在這篇文章中使用的資料集是政府資料開放平台提供的 ????桃園市官網市政新聞,由於 N-gram 所產生的結果會根據資料集而有所不同,因此在選擇資料集時必須評估該資料集是否合適。假設使用的資料集中包含許多火星文,根據 N-gram 產生的語言模型,其結果將會與火星文相關。* M$ ^# [0 c6 X% L8 a9 N5 M
    , ~* j8 v, J; t$ C
    資料前處理; ^* @( R$ E' u( C, X* _) I
    桃園市官網市政新聞包含了許多的資料欄位,而我們需要的僅有報導文章的部分,因此將報導單獨取出。8 {7 }8 N9 c. Y1 ?3 l7 B1 o
    而報導中包含許多許多英文、數字與表點符號,為了實作方便,將除了繁體中文字以外的字用正規表達式 (Regular Expression) 去除。0 {: |# u8 A- O! H+ S; w5 S+ Q

    " z" o8 x& t2 m7 O. TN-gram 實作
    ! I. F0 O7 ~1 a% e" k8 V* b- F在實作 N-gram 時,首先,我們要將每一篇文章做 tokenize;而我們想知道一篇文章的開頭與結尾,所以在 tokenize 之後,在前後分別加上 <s> 和 </s> 作為標示。
    / Y& L- B( Z8 t  L; b5 f! b5 X1 N而在計算每個字出現的機率後,可以利用 set,將重複的字與機率去除,例如計算出兩次在「桃園」後出現「縣」的機率都是 1,我們可以只保留一組。1 l* m% K5 I2 _3 F( E! B  i# |3 _( X

    # y4 B' y5 @' t) z5 U, W6 i/ c# i% B. O訓練模型與排序  y9 s* @$ E" ~& G( s* ~
    我們使用的模型是 trigram,也就是計算接在兩個字之後第三個字的機率。接著,可以對結果進行排序,因此在預測下一個字時,能夠直接取得前幾個最高機率的字。
    $ j' P0 \7 U& z: I: B0 Z" U& W! R( ^1 a* s& O' B% W* l
    預測輸入的下一個字
    + T% ]3 @, C& ?: I最後,我們使用模型來預測接下來可能會出現的文字,輸入「韓國」後出現的下一個字為「仁、及、地、超、文」最高機率的這 5 個字。  [$ \& q3 i/ n. `1 w$ N7 `$ H7 @
    1 [3 h! j; c0 Z' ]- `; a2 e
    結論
    1 V+ a! e$ i6 V# K0 R6 N, h. DN-gram 是一個理論較為簡單,而且容易實作的語言模型,可以花少量的程式碼達到不錯的效果。
      ]0 O5 F5 C) J1 m6 n. V2 Q但是,也許你會思考在預測下一個字時,得出字組合起來沒有特別的意思,因為 N-gram 只是單純利用統計得出機率比較大的字詞組合,所以在預測時看似會較沒有邏輯。
    ( o6 s! g; u" s3 D7 |. }如果想要得出更好的結果可以嘗試使用較為複雜的模型,例如 Transformer 或是 ConvS2S 等 Google 與 Facebook 曾經發表的模型。
    , H: |" X  m5 `1 M" o1 [0 z. d4 X  v" h+ w3 _# m; H
    8 D6 h; J* c1 F, b* C0 y7 B2 @
    5 n8 w: }- a' T7 B7 n7 a7 p4 i. c

    评分

    1

    查看全部评分

  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-12-27 16:01:24 | 显示全部楼层
    喬治兄 发表于 2019-12-27 14:15
    7 ?) X" M3 [% {, A0 C! N% sBrother henices :! Z+ \2 l" G7 D3 W
    前陣子在圖書館亂翻統計類的書
      \  E* a& W+ z8 ?; c( z提及人工智慧, 後來發現人工智慧 N-Gram 和馬可夫鏈略有 ...

    * ]) J$ S. i: P  P5 W乔治兄的这个评论好,完美科普了N-Gram,受益匪浅,感谢!. F$ ?1 @  W  v8 e0 n
  • TA的每日心情
    奋斗
    2018-5-18 05:02
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2019-12-28 05:39:08 | 显示全部楼层
    其实可以把英语和德语放一起学,这两种语言的相似度比较大。

    该用户从未签到

    发表于 2020-1-1 01:13:09 | 显示全部楼层
    俗话说,因材施教,遇到那种不可救药的讲啥都白搭。
  • TA的每日心情
    奋斗
    2021-4-9 12:40
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2020-9-20 07:18:21 | 显示全部楼层
    看到“语法对于我来说已经早就不是问题”,真是羡慕。; q% X8 F8 [. j" c( q! H
    不过看到上面说的中国人自己编写的语法书往往看了可能不好,有些无语。有时候为了辅助教学,& F2 p! ^- }2 y& R
    造些实际不那么好的句子无可厚非,不过感觉要说清楚,告诉读者实际不要这么说。
  • TA的每日心情
    奋斗
    2021-4-9 12:40
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2020-9-20 07:31:16 | 显示全部楼层
    看了后,感觉这篇文章说得太过简单了。当然,作者的水平太高,很多东西可能在他看来太简单,没必要说吧,但是对于水平低的,就不是那么" d) t8 S/ D/ S+ Z8 L; R+ f4 p! W
    回事了。看后有收获,但是要提高还是多练习。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2024-5-23 22:49 , Processed in 0.061227 second(s), 13 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

    快速回复 返回顶部 返回列表