小编zer*_*ozf的帖子

Ngram模型和NLTK中的困惑

为了将我的问题放在上下文中,我想训练和测试/比较几种(神经)语言模型.为了专注于模型而不是数据准备,我选择使用来自nltk的布朗语料库并训练以nltk提供的Ngrams模型作为基线(比较其他LM对照).

所以我的第一个问题实际上是关于我发现可疑的ngram模型的行为.由于代码相当短,我在这里粘贴:

import nltk

print "... build"
brown = nltk.corpus.brown
corpus = [word.lower() for word in brown.words()]

# Train on 95% f the corpus and test on the rest
spl = 95*len(corpus)/100
train = corpus[:spl]
test = corpus[spl:]

# Remove rare words from the corpus
fdist = nltk.FreqDist(w for w in train)
vocabulary = set(map(lambda x: x[0], filter(lambda x: x[1] >= 5, fdist.iteritems())))

train = map(lambda x: x if x in vocabulary else "*unknown*", train)
test = map(lambda x: x …
Run Code Online (Sandbox Code Playgroud)

python nltk n-gram

13
推荐指数
1
解决办法
9738
查看次数

IPython.parallel不使用多核?

我正在试验,IPython.parallel只是想在不同的引擎上启动几个shell命令.

我有以下笔记本:

单元格0:

from IPython.parallel import Client
client = Client()
print len(client)
5
Run Code Online (Sandbox Code Playgroud)

并启动命令:

单元格1:

%%px --targets 0 --noblock
!python server.py
Run Code Online (Sandbox Code Playgroud)

单元格2:

%%px --targets 1 --noblock
!python mincemeat.py 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

单元格3:

%%px --targets 2 --noblock
!python mincemeat.py 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

它的作用是使用mincemeatMapReduce 的实现.当我启动第!python mincemeat.py 127.0.0.1一个核心时,它大约使用100%的一个核心,然后当我启动第二个核心时,每个核心降低到50%.我在机器上有4个核心(+虚拟核心),可以直接从终端启动而不是在笔记本电脑中使用它们.

有什么我想念的吗?我想为每个!python mincemeat.py 127.0.0.1命令使用一个核心.

编辑:
为清楚起见,这是另一个不使用多核的东西:

单元格1:

%%px --targets 0 --noblock

a = 0
for i in xrange(100000):
    for j in xrange(10000):
        a += 1
Run Code Online (Sandbox Code Playgroud)

单元格2:

%%px --targets 0 --noblock

a = …
Run Code Online (Sandbox Code Playgroud)

python mapreduce ipython ipython-notebook ipython-parallel

11
推荐指数
1
解决办法
4040
查看次数

使用笔记本时,将jar添加到pyspark

我正在尝试将mongodb hadoop与spark集成,但无法弄清楚如何让IPython笔记本可以访问jar.

这就是我要做的:

# set up parameters for reading from MongoDB via Hadoop input format
config = {"mongo.input.uri": "mongodb://localhost:27017/db.collection"}
inputFormatClassName = "com.mongodb.hadoop.MongoInputFormat"

# these values worked but others might as well
keyClassName = "org.apache.hadoop.io.Text"
valueClassName = "org.apache.hadoop.io.MapWritable"

# Do some reading from mongo
items = sc.newAPIHadoopRDD(inputFormatClassName, keyClassName, valueClassName, None, None, config)
Run Code Online (Sandbox Code Playgroud)

当我使用以下命令在pyspark中启动它时,此代码工作正常:

spark-1.4.1/bin/pyspark --jars'mongo-hadoop-core-1.4.0.jar,mongo-java-driver-3.0.2.jar'

where mongo-hadoop-core-1.4.0.jarmongo-java-driver-2.10.1.jar允许从java使用mongodb.但是,当我这样做时:

IPYTHON_OPTS ="notebook"spark-1.4.1/bin/pyspark --jars'mongo-hadoop-core-1.4.0.jar,mongo-java-driver-3.0.2.jar'

这些罐子不再可用了,我收到以下错误:

java.lang.ClassNotFoundException:com.mongodb.hadoop.MongoInputFormat

有谁知道如何在IPython笔记本中为罐子提供罐子?我很确定这不是特定于mongo所以也许有人已经成功地在使用笔记本时将jar添加到类路径中?

python jar ipython-notebook apache-spark pyspark

5
推荐指数
1
解决办法
3953
查看次数