我正在尝试在Real World Haskell中编译一些代码 - 第24章LineCount.hs.
我没有对代码进行任何更改.
但是,当我这样做时:
ghc -O2 --make -threaded LineCount.hs
Run Code Online (Sandbox Code Playgroud)
(按照书中的说明),我得到的信息是:
MapReduce.hs:6:7: Not in scope: `rnf'
Run Code Online (Sandbox Code Playgroud)
我可能做错了什么?
快速搜索显示,过去的包并行和严格并发存在一些问题,重新安装它们可以解决问题.但是,我试过了,它没有用.此外,值得注意的是,该问题已于2010年某个时候修复:https: //groups.google.com/forum/?fromgroups =#!msg/happs/gOieP4xfpNc/nrasm842JlUJ
注意:在同一章中编译其他文件时,我会收到各种其他错误.例如,在编译Strat.hs时,我得到:模块Control.Parallel.Strategies' does not exportparZipWith'.在编译LineChunks.hs时,我得到:Module Control.Parallel.Strategies' does not exportrnf'.
老实说,作为一名新手Haskell程序员,一旦我开始修改代码,我预计会遇到麻烦 - 但我没想到书中的代码有问题!
我有一张图片.
我想为图像中的每个像素获得3x3窗口(相邻像素).
我有这个Python代码:
for x in range(2,r-1,1):
for y in range(2,c-1,1):
mask5=numpy.array([cv.Get2D(copy_img,x-1,y-1),cv.Get2D(copy_img,x-1,y),cv.Get2D(copy_img,x-1,y+1),cv.Get2D(copy_img,x,y-1),cv.Get2D(copy_img,x,y),cv.Get2D(copy_img,x,y+1),cv.Get2D(copy_img,x+1,y-1),cv.Get2D(copy_img,x+1,y),cv.Get2D(copy_img,x+1,y+1)])
cent=[cv.Get2D(copy_img,x,y)]
Run Code Online (Sandbox Code Playgroud)
mask5是3x3窗口.cent是中心像素.
有没有更有效的方法来做到这一点 - 即使用map,iterators - 除了我使用的两个嵌套循环之外的任何东西?
我正在为一门课程做一个作业,这要求我用函数式语言实现一个并行的MapReduce引擎,然后用它来解决某些简单的问题.
你认为我应该使用哪种功能语言?
这是我的要求:
我目前正在考虑Haskell和Clojure,但这两种语言对我来说都是新的 - 我不知道这些语言是否真的适合这种情况.
我有一个单词列表.例如:
reel
road
root
curd
Run Code Online (Sandbox Code Playgroud)
我想以反映以下结构的方式存储此数据:
Start -> r -> e -> reel
-> o -> a -> road
o -> root
c -> curd
Run Code Online (Sandbox Code Playgroud)
对我来说很明显,我需要实现一棵树.从这棵树,我必须能够轻松获得统计信息,如节点的高度,节点的后代数,搜索节点等.添加节点应该"自动"将其添加到树中的正确位置,因为此位置是唯一的.
它还希望能够以实际图形树的形式可视化数据.由于树将变得庞大,我需要在可视化上进行缩放/平移控制.当然,漂亮的可视化总是比丑陋的更好.
有没有人知道Python包可以让我简单地实现这一切?自己编写代码需要很长时间.您认为http://packages.python.org/ete2/适合此任务吗?
我正在使用Python 2.x,顺便说一下.
我发现NLTK有一个特里类 - nltk.containers.trie.这对我来说很方便,因为我已经使用了NLTK.有谁知道如何使用这个类?我在任何地方都找不到任何例子!例如,如何在trie中添加单词?
我将不得不在Python中执行类似拼写检查的操作,如下所示:
我有一个巨大的单词列表(让我们称之为词典).我现在给了一些文本(我们称之为样本).我必须在词典中搜索每个样本单词.如果我找不到它,那个样本字就是错误.
简而言之 - 一个蛮力拼写检查器.但是,对每个样本字线性搜索词典必然会很慢.有什么更好的方法呢?
复杂因素是样本和词典都不是英文的.它是一种语言而不是26个字符,可以有超过300个 - 以Unicode格式存储.
任何算法/数据结构/并行化方法的建议都会有所帮助.以低于100%的准确度为代价的高速算法将是完美的,因为我不需要100%的准确度.我知道Norvig的算法,但它似乎是英语特有的.
python algorithm optimization spell-checking data-structures
我有一个包含数十万个单词的 Python 列表。单词按照它们在文本中的顺序出现。
我希望为每个单词创建一个字典,该字典与包含该单词的字符串相关联,并且在该单词之前和之后出现 2 个(比如说)单词。
例如列表:“This”“is”“an”“example”“sentence”
应该成为字典:
"This" = "This is an"
"is" = "This is an example"
"an" = "This is an example sentence"
"example" = "is an example sentence"
"sentence" = "an example sentence"
Run Code Online (Sandbox Code Playgroud)
就像是:
WordsInContext = Dict()
ContextSize = 2
wIndex = 0
for w in Words:
WordsInContext.update(w = ' '.join(Words[wIndex-ContextSize:wIndex+ContextSize]))
wIndex = wIndex + 1
Run Code Online (Sandbox Code Playgroud)
这可能包含一些语法错误,但即使这些错误得到纠正,我确信这将是一种极其低效的方法。
有人可以建议一个更优化的方法吗?
我有两个非常长的单词序列.
我需要找到他们不同的地方.例如,如果输入是
1st sequence: A B C D E F G
2nd sequence: A X D Y Z W G
Run Code Online (Sandbox Code Playgroud)
(这里的每个字符代表一个单词)
输出应该是:
B C -> X
E F -> Y Z W
Run Code Online (Sandbox Code Playgroud)
我的想法:我可以有两个序列的索引.最初,两者都指向A.增加两个指数.现在第一个索引指向B,第二个索引指向X.我现在可以搜索整个第二个序列中的B.没有找到它,我可以搜索整个第二个序列中的C,然后搜索D.我会找到一个D,并且因此可以解决问题.
显然,这种"蛮力"方法很糟糕.
什么是更好的方法?
我正在用Python编写我的代码,并使用NLTK,所以如果可以使用内置的NLTK功能部分或完全解决这个问题,那么它将更快(实现).
我有很多单词的列表.
从中,我想创建一个字典,其中包含列表中的每个唯一单词作为键,以及它作为键的值出现在(列表索引)中的第一个位置.
有没有一种有效的方法来做到这一点?