SML-Babblelab

Babblelab

实验背景

“图灵测试”是指测试者在与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。进行多次测试后,如果有超过30%的测试者不能确定出被测试者是人还是机器,那么这台机器就通过了测试,并被认为具有人类智能。

本实验设计了一个算法,使得机器能够通过图灵测试。即通过对所提供的文本进行分析,根据每个词之后的一定词数范围内的词出现的频率决定机器所给出的一句话之中下一个词是什么。本实验中提供了莎士比亚的作品,以达到机器能够“写诗”的目的。

实验细节

1.SEQUENCE_UTIL

1.1String Tokens

tokens : (char -> bool) -> string -> string seq

函数功能:

返回所给字符串当中的不含给定字符的全部最大非空子串

函数代码:

val cp=not o Char.isAlphaNum

fun tokens (cp : char -> bool) (str : string) : string seq =letval n = String.size strval chars = tabulate (fn i => (i, String.sub (str, i))) nval idx = map (fn (i,_) => i) (filter (fn (_,c) => cp c) chars)(* grab substrings in between delimiters *)val subs = map2 (fn (i,i') => String.substring (str, i, i' - i))(append (singleton 0, map (fn i => i + 1) idx))(append (idx, singleton n))in filter (fn s => size s > 0) subsend

1.2Histograms

1.2.1 histograms

type 'a hist = ('a * int) seq

val histogram : 'a ord -> 'a seq -> 'a hist

函数功能:

返回一个(key,num)二元组构成的串,其中num为key在所给seq中出现的频次

函数代码:

  fun histogram (cmp : 'a ord) (s : 'a seq) : 'a hist =map (fn (a, c) => (a, length c))(collect cmp (map (fn a =


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部