文章在这里:
http://www.norvig.com/spell-correct.html
import re, string, collections
def words(text): return re.findall('[a-z]+', text.lower())
def train(features):
model = collections.defaultdict(lambda: 1)
for f in features:
model[f] += 1
return model
NWORDS = train(words(file('Documents/holmes.txt').read()))
def edits1(word):
n = len(word)
return set([word[0:i]+word[i+1:] for i in range(n)] + ## deletion
[word[0:i]+word[i+1]+word[i]+word[i+2:] for i in range(n-1)] + ## transposition
[word[0:i]+c+word[i+1:] for i in range(n) for c in string.lowercase] + ## alteration
[word[0:i]+c+word[i:] for i in range(n+1) for c in string.lowercase]) ## insertion
def known_edits2(word):
return set(e2 for e1 in edits1(word) for e2 in edits1(e1) if e2 in NWORDS)
def known(words): return set(w for w in words if w in NWORDS)
def correct(word):
return max(known([word]) or known(edits1(word)) or known_edits2(word) or [word],
key=lambda w: NWORDS[w])
牛人就是牛人,这几行代码是在飞机上写的.
分享到:
相关推荐
Peter Norvig 拼写校正器的 Haskell 实现。 阅读更多。 用法 为了使用或编译程序,您需要安装 。 克隆存储库后,转到存储库文件夹并执行 cabal build 现在你编译了程序。 你可以像这样运行它: ./dist/build/...
"Peter Norvig 拼写检查器"是基于著名计算机科学家Peter Norvig的文章《How to Write a Spelling Corrector》实现的一个示例,它展示了如何使用流和函数式编程来解决自然语言处理中的拼写纠正问题。在这个项目中,...
在Peter Norvig的课程中,他不仅教授Python的基础语法,还强调了如何利用Python进行问题解决和程序设计。通过一系列项目,学生将有机会实践所学知识,解决实际问题,从而提升编程能力。 "design-of-computer-...
Paradigms of AI Programming is the first text to teach advanced Common Lisp techniques in the context of building major AI systems. By reconstructing authentic, complex AI programs using state-of-the-...
拼写检查这是 Peter Norvig 的拼写校正算法在 Golang 中的实现。 您可以在此处阅读有关该算法的更多信息。 这个实现是多线程安全的,看起来有点像 Norvig 的实现,但底层算法是一样的。
来自Russell和Norvig的人工智能中算法的Python实现
这个项目可能受到了Peter Norvig的“lispy”代码的影响,Peter Norvig是一位知名的人工智能专家和编程语言设计师,他的“lispy”是用Python编写的一个小巧的Scheme解释器,常用于教学和演示目的。 描述中提到的...
We call ourselves Homo sapiens—man the wise—because our intelligence is so important to us. For thousands of years, we have tried to understand how we think; that is, how a mere handful of matter ...
Jscheme(方案(在Java中,由Peter Norvig编写)) 这是在找到的代码。 在第一次提交期间,它已准备好在IntelliJ中执行,并略微格式化为更现代的编码标准。 提交为“首次提交”的所有代码均由Peter Norvig编写,并...
LispyLite LispyLite是一个用Java编写的玩具/实验性Scheme解释器和JavaScript编译器。 它基于的。包含什么互动式REPL JavaScript编译器支持整数和浮点数未计划支持任何其他数据类型(例如,字符串,符号) 列表以外...
Peter Norvig 在 21 个 Python 代码中实现了一个聪明的算法,现在还有许多其他语言的实现。 我首先注意到第一个 Java 实现有 372 行代码,令人尴尬。 第二个 java 实现有 35 行代码。 那么让我们看看它在 Java 8 中...
Python 实现单词拼写检查是通过利用编程语言的特性与现有的拼写检查工具结合来查找并纠正文本中的拼写错误。下面将详细解释这个过程涉及的关键知识点: 1. **Aspell 和 Ispell 工具**: Aspell 和 Ispell 是两个...
C夏普PAIP 这个项目的目的是使用C#浏览我最喜欢的书之一,( 的各章。 为什么? 我认为C#基本上是一个Lisp,没有宏,语法不一致和太多特殊形式。 为了向我自己证明这一点,我将在各章中进行研究,看看静态类型是否...
数子Peter Norvig 的数独求解器的实现。 (见 ) 数独谜题是由 81 个方格组成的网格; 大多数爱好者将第 1-9 列标记为行 AI,并将九个方格(列、行或框)的集合称为一个单元,将共享一个单元的方格称为同行。 拼图让...
数独 Javascript 库,基于 Peter Norvig 的求解器 这个库是从和的数独游戏中提取的。 它包含生成和解决谜题、获取正在进行的谜题中的冲突列表以及序列化和反序列化谜题的函数。 有关库的更全面描述,请查看
彼得·诺维格(Peter Norvig)的移植到 。 您可以使用sudoku方法从字符串输入创建SudokuPuzzle 。 julia > using Sudoku julia > grid1 = " ...
介绍该文件概述了教科书《人工智能:现代方法》(也称为 AIMA)中算法的 Python 代码。 该代码在 MIT 许可下免费提供给您使用。 您可能知道,教科书以伪代码格式呈现算法; 作为补充,我们提供此代码。 目的是实现...
norvig神牛Python代码写的很飘逸,果然是有LISP内功的人! 本书涉嫌抄袭leetcode,特此注明 题目分类 from ###Dynamic Programming Edit Distance Maximum Subarray Minimum Path Sum Unique Paths Unique Paths II ...
Russell, Peter Norvig - Artificial Intelligence_ A Modern Approach, 3rd Edition (2016, Pearson Education) (2).pdf"是人工智能的经典教材,由Stuart Russell和Peter Norvig合著。这本书全面介绍了人工智能的...
Peter Norvig 在有一个很棒的解释。 我的目标是编写一个易于理解的 Pythonic 程序(限制使用推导式)。 我正在用不同的编程语言实现生命游戏以了解它们。 你可以找到。 我喜欢/不喜欢 python 的地方 Python 语法...