我们将借此机会重新表述前面的命题逻辑的语法规则,并添加量词的形式化规则;所有这些一起组成一阶逻辑的句法。此外,我们会明确相关表达式的类型。我们将采取约定:〈e<sup>n</sup>, t〉一种由 n 个类型为 e 的参数组成产生一个类型为 t 的表达式的谓词的类型。在这种情况下,我们说 n 是谓词的元数。
> 1. If P is a predicate of type 〈e<sup>n</sup>, t〉, and α<sub>1</sub>, ... α<sub>n</sub> are terms of type e, then P(α<sub>1</sub>, ... α<sub>n</sub>) is of type t.
> 1. If P is a predicate of type 〈e<sup>n</sup>, t〉, and α[1], ... α<sub>n</sub> are terms of type e, then P(α[1], ... α<sub>n</sub>) is of type t.
> 2. If α and β are both of type e, then (α = β) and (α != β) are of type t.
> 3. If φ is of type t, then so is `-`φ.
> 4. If φ and ψ are of type t, then so are (φ `&` ψ), (φ `|` ψ), (φ `->` ψ) and (φ `<->` ψ).
你可能已经注意到,我们的一元谓词(即`boy`,`girl`,`dog`)也是以单个元组的集合而不是个体的集合出现的。这使我们能够方便的统一处理任何元数的关系。一个形式为 P(τ<sub>1</sub>, ... τ<sub>n</sub>)的谓词,其中 P 是 n 元的,为真的条件是对应于(τ<sub>1</sub>, ... τ<sub>n</sub>) 的值的元组属于 P 的值的元组的集合。
你可能已经注意到,我们的一元谓词(即`boy`,`girl`,`dog`)也是以单个元组的集合而不是个体的集合出现的。这使我们能够方便的统一处理任何元数的关系。一个形式为 P(τ[1], ... τ<sub>n</sub>)的谓词,其中 P 是 n 元的,为真的条件是对应于(τ[1], ... τ<sub>n</sub>) 的值的元组属于 P 的值的元组的集合。
@@ -150,7 +150,7 @@ Kappa 系数 K 测量两个人判断类别和修正预期的期望一致性的
最简单的方法是获得出版的网页文本的文集。Web 语料库 ACL 特别兴趣组(SIGWAC)在`http://www.sigwac.org.uk/`维护一个资源列表。使用定义好的 Web 语料库的优点是它们有文档、稳定并允许重复性实验。
如果所需的内容在一个特定的网站,有许多实用程序能捕获网站的所有可访问内容,如 _GNU Wget_`http://www.gnu.org/software/wget/`。For maximal flexibility and control, a web crawler can be used, such as *Heritrix*`http://crawler.archive.org/`. 为了最大的灵活性和可控制,可以使用网络爬虫如[(Croft, Metzler, & Strohman, 2009)](./bibliography.html#croft2009)。例如:如果我们要编译双语文本集合,对应两种语言的文档对,爬虫需要检测站点的结构以提取文件之间的对应关系,它需要按照捕获的对应方式组织下载的页面。写你自己的网页爬虫可能使很有诱惑力的,但也有很多陷阱需要克服,如检测 MIME 类型、转换相对地址为绝对 URL、避免被困在循环链接结构、处理网络延迟、避免使站点超载或被禁止访问该网站等。
如果所需的内容在一个特定的网站,有许多实用程序能捕获网站的所有可访问内容,如 *GNU Wget*`http://www.gnu.org/software/wget/`。For maximal flexibility and control, a web crawler can be used, such as *Heritrix*`http://crawler.archive.org/`. 为了最大的灵活性和可控制,可以使用网络爬虫如[(Croft, Metzler, & Strohman, 2009)](./bibliography.html#croft2009)。例如:如果我们要编译双语文本集合,对应两种语言的文档对,爬虫需要检测站点的结构以提取文件之间的对应关系,它需要按照捕获的对应方式组织下载的页面。写你自己的网页爬虫可能使很有诱惑力的,但也有很多陷阱需要克服,如检测 MIME 类型、转换相对地址为绝对 URL、避免被困在循环链接结构、处理网络延迟、避免使站点超载或被禁止访问该网站等。
然而,当我们的目标只是简单的从数据库中提取内容时,完全可以将表格(或 SQL 查询结果)转换成 CSV 格式,并加载到我们的程序中。我们的程序可能会执行不太容易用 SQL 表示的语言学目的的查询,如 _select all words that appear in example sentences for which no dictionary entry is provided_。对于这个任务,我们需要从记录中提取足够的信息,使它连同词条和例句能被唯一的识别。让我们假设现在这个信息是在一个 CSV 文件`dict.csv`中:
然而,当我们的目标只是简单的从数据库中提取内容时,完全可以将表格(或 SQL 查询结果)转换成 CSV 格式,并加载到我们的程序中。我们的程序可能会执行不太容易用 SQL 表示的语言学目的的查询,如 *select all words that appear in example sentences for which no dictionary entry is provided*。对于这个任务,我们需要从记录中提取足够的信息,使它连同词条和例句能被唯一的识别。让我们假设现在这个信息是在一个 CSV 文件`dict.csv`中:
```py
"sleep","sli:p","v.i","a condition of body and mind ..."
a. Overhead the day drives level and grey, hiding the sun by a flight of grey spears. (William Faulkner, _As I Lay Dying_, 1935)
a. Overhead the day drives level and grey, hiding the sun by a flight of grey spears. (William Faulkner, *As I Lay Dying*, 1935)
b. When using the toaster please ensure that the exhaust fan is turned on. (sign in dormitory kitchen)
...
...
@@ -36,7 +36,7 @@ g. There are two ways to do this, AFAIK :smile: (internet discussion archive)
另一个密切相关的发展是组合原理,即一个复杂表达式的意思由它的各个部分的意思和它们的组合模式组成([10.](./ch10.html#chap-semantics))。这一原理提供了句法和语义之间的有用的对应,即一个复杂的表达式的含义可以递归的计算。考虑句子 It is not true that p,其中 p 是一个命题。我们可以表示这个句子的意思为 not(p)。同样,我们可以表示 John saw Mary 的意思为 saw(j, m)。现在,我们可以使用上述信息递归地计算 It is not true that John saw Mary 的表示,得到 not(saw(j,m))。
7. ☼ 根据 Strunk 和 White 的《Elements of Style》,词 however 在句子开头使用是“in whatever way”或“to whatever extent”的意思,而没有“nevertheless”的意思。他们给出了正确用法的例子:However you advise him, he will probably do as he thinks best.(`http://www.bartleby.com/141/strunk3.html`) 使用词汇索引工具在我们一直在思考的各种文本中研究这个词的实际用法。也可以看 *LanguageLog* 发布在`http://itre.cis.upenn.edu/~myl/languagelog/archives/001913.html`上的“Fossilized prejudices abou‘t however’”。
@@ -99,7 +99,7 @@ Project Gutenberg; Dmitri Prokofitch; Andrey Semyonovitch; Hay Market
### 处理 HTML
网络上的文本大部分是 HTML 文件的形式。你可以使用网络浏览器将网页作为文本保存为本地文件,然后按照下面关于文件的小节描述的那样来访问它。不过,如果你要经常这样做,最简单的办法是直接让 Python 来做这份工作。第一步是像以前一样使用`urlopen`。为了好玩,我们将挑选一个被称为 _Blondes to die out in 200 years_ 的 BBC 新闻故事,一个都市传奇被 BBC 作为确立的科学事实流传下来:
网络上的文本大部分是 HTML 文件的形式。你可以使用网络浏览器将网页作为文本保存为本地文件,然后按照下面关于文件的小节描述的那样来访问它。不过,如果你要经常这样做,最简单的办法是直接让 Python 来做这份工作。第一步是像以前一样使用`urlopen`。为了好玩,我们将挑选一个被称为 *Blondes to die out in 200 years* 的 BBC 新闻故事,一个都市传奇被 BBC 作为确立的科学事实流传下来:
* David Beazley, Mastering Python 3 I/O, `http://pyvideo.org/video/289/pycon-2010--mastering-python-3-i-o`
* Joel Spolsky, _The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)_, `http://www.joelonsoftware.com/articles/Unicode.html`
* Joel Spolsky, *The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)*, `http://www.joelonsoftware.com/articles/Unicode.html`
**轮到你来:** 很多单词,如 ski 和 race,可以用作名词或动词而发音没有区别。你能想出其他的吗?提示:想想一个常见的东西,尝试把词 to 放到它前面,看它是否也是一个动词;或者想想一个动作,尝试把 the 放在它前面,看它是否也是一个名词。现在用这个词的两种用途造句,在这句话上运行词性标注器。
`>>> my_dictionary = defaultdict(`_function to create default value_`)``>>> for`*item*`in`*sequence*`:``... my_dictionary[`_item_key_`]` _is updated with information about item_