为了将我的问题放在上下文中,我想训练和测试/比较几种(神经)语言模型.为了专注于模型而不是数据准备,我选择使用来自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) 我正在试验,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)
它的作用是使用mincemeat
MapReduce 的实现.当我启动第!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) 我正在尝试将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.jar
和mongo-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添加到类路径中?