-
【题目和解决】NLTK was unable to find the megam file!(1)
添加时间:2013-5-15 点击量:在学到“练习基于分类器的分块器”这一末节的时辰,在测试代码之后碰到了题目。
class ConsecutiveNPChunkTagger(nltk.TaggerI):
def __init__(self, train_sents):
train_set = []
for tagged_sent in train_sents:
untagged_sent = nltk.tag.untag(tagged_sent)
history = []
for i, (word, tag) in enumerate(tagged_sent):
featureset = npchunk_features(untagged_sent, i, history)
train_set.append( (featureset, tag) )
history.append(tag)
self.classifier = nltk.MaxentClassifier.train(train_set, algorithm=megam, trace=0)
def tag(self, sentence):
history = []
for i, word in enumerate(sentence):
featureset = npchunk_features(sentence,i, history)
tag = self.classifier.classify(featureset)
history.append(tag)
return zip(sentence, history)class ConsecutiveNPChunker(nltk.ChunkParserI):
def __init__(self, train_sents):
tagged_sents = [[((w,t),c) for (w,t,c) in
nltk.chunk.tree2conlltags(sent)]for sent in train_sents]
self.tagger = ConsecutiveNPChunkTagger(tagged_sents)
def parse(self, sentence):
tagged_sents = self.tagger.tag(sentence)
conlltags =[(w,t,c) for ((w,t),c) in tagged_sents]
return nltk.chunk.conlltags2tree(conlltags)def npchunk_features(sentence,i, history):
... word,pos= sentence[i]
... return {pos: pos}
>>>chunker = ConsecutiveNPChunker(train_sents)
>>>print chunker.evaluate(test_sents)以上是书上供给的代码,题目是,当在履行
chunker = ConsecutiveNPChunker(train_sents)并没有如期履行,反而呈现了一个错误。
Traceback (most recent call last):
File <pyshell#119>, line 1, in <module>
chunker = ConsecutiveNPChunker(train_sents)
File <pyshell#118>, line 5, in __init__
self.tagger = ConsecutiveNPChunkTagger(tagged_sents)
File <pyshell#116>, line 11, in __init__
self.classifier = nltk.MaxentClassifier.train(train_set, algorithm=megam, trace=0)
File D:\SpecialSoftware\Python25\Lib\site-packages\nltk\classify\maxent.py, line 319, in train
gaussian_prior_sigma, cutoffs)
File D:\SpecialSoftware\Python25\Lib\site-packages\nltk\classify\maxent.py, line 1522, in train_maxent_classifier_with_megam
stdout = call_megam(options)
File D:\SpecialSoftware\Python25\Lib\site-packages\nltk\classify\megam.py, line 163, in call_megam
config_megam()
File D:\SpecialSoftware\Python25\Lib\site-packages\nltk\classify\megam.py, line 59, in config_megam
url=http://www.cs.utah.edu/~hal/megam/)
File D:\SpecialSoftware\Python25\Lib\site-packages\nltk\internals.py, line 528, in find_binary
url, verbose)
File D:\SpecialSoftware\Python25\Lib\site-packages\nltk\internals.py, line 512, in find_file
raise LookupError(\n\n%s\n%s\n%s % (div, msg, div))
LookupError:
===========================================================================
NLTK was unable to find the megam file!
Use software specific configuration paramaters or set the MEGAM environment variable.
For more information, on megam, see:
<http://www.cs.utah.edu/~hal/megam/>
===========================================================================固然说给出了响应的提示,然则并不完全。
经由过程对谷歌的搜刮,找到了一些解决的端倪。
我的操纵体系是Windows8.
nltk说话对象的官网给出了提示:
https://sites.google.com/site/naturallanguagetoolkit/download
Megam为可选包,将来应用的时辰可以再来安装。的网址为:MegaM: http://hal3.name/megam/megam_src.tgz,直接我并没有成功,应用迅雷成功的。
然则打开之后发明,都是些源文件。然则在这个紧缩包里面有一个README文件,给出了如何应用的提示,发明,还须要装一个器材。
README中如许写到:ocaml(http://caml.inria.fr)
须要到这个网站源文件的编译器,于是我了和本身电脑体系相匹配的版本,然则看申明安装起来还是须要揣摩的,在安装过程中提示是病毒,然则我还是选择信赖,要不然没办法持续。
【如今Ocaml正在安装,我点的完全安装(可能实际傍边没有须要完全安装吧),等安装完成后,再持续摸索怎么解决这个题目】