我刚开始我的第一个NLTK项目,并对正确的设置感到困惑.我需要几个资源,如Punkt Tokenizer和maxent pos tagger.我自己使用GUI下载它们nltk.download().对于我的合作者,我当然希望自动下载这些内容.我没有在文档中找到任何惯用代码.
我应该把nltk.data.load('tokenizers/punkt/english.pickle')它们放进代码中吗?这是在每次运行脚本时下载资源吗?我是否向用户(即我的共同开发者)提供了有关下载内容以及为什么需要这么长时间的反馈?那里必须有适合工作的装备,对吗?:)
//编辑要探讨我的问题:
如何测试运行我的代码的机器上是否已安装nltk资源(如Punkt Tokenizer),如果不是,则安装它?
我尝试用urllib2执行一个简单的POST请求.但是服务器响应表明它收到一个简单的GET.我检查了传出请求的类型,但它设置为POST.
为了检查服务器是否像我期望的那样,我尝试使用连接到url的(以前的POST-)数据执行GET请求.这给了我预期的答案.
有人知道我误解了什么吗?
def connect(self):
url = 'http://www.mitfahrgelegenheit.de/mitfahrzentrale/Dresden/Potsdam.html/'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
header = { 'User-Agent' : user_agent }
values = {
'city_from' : 69,
'radius_from' : 0,
'city_to' : 263,
'radius_to' : 0,
'date' : 'date',
'day' : 5,
'month' : 03,
'year' : 2012,
'tolerance' : 0
}
data = urllib.urlencode(values)
# req = urllib2.Request(url+data, None, header) # GET works fine
req = urllib2.Request(url, data, header) # POST request doesn't not work
self.response = …Run Code Online (Sandbox Code Playgroud) 我正在通过Armstrongs"编程Erlang"向Erlang介绍自己.一个练习是编写tuple_to_list/1 BIF的重新实现.我的解决方案对我来说似乎相当不优雅,特别是因为我使用的辅助功能.是否有更多的Erlang-ish方法呢?
tup2lis({}) -> [];
tup2lis(T) -> tup2list_help(T,1,tuple_size(T)).
tup2list_help(T,Size,Size) -> [element(Size,T)];
tup2list_help(T,Pos,Size) -> [element(Pos,T)|tup2list_help(T,Pos+1,Size)].
Run Code Online (Sandbox Code Playgroud)
非常感谢你的想法.:)
我此刻正在玩Haskell,因此偶然发现了列表理解功能.当然,我会用一个闭包来做这种事情:
Prelude> [x|x<-[1..7],x>4] -- list comprehension
[5,6,7]
Prelude> filter (\x->x>4) [1..7] -- closure
[5,6,7]
Run Code Online (Sandbox Code Playgroud)
我仍然感觉不到这种语言,那么Haskell程序员会采用哪种方式?这两种解决方案有什么区别?
我今天开始使用 Clojure 并偶然发现可以在运行时动态更改函数的声明。这听起来很酷,所以我用这个特性写了一小段代码。
(defn ^:dynamic state [x]
(odd x))
(defn even [x]
(if (= x 0)
(println "even")
(binding [state odd] (parity x))))
(defn odd [x]
(if (= x 0)
(println "odd")
(binding [state even](parity x))))
(defn parity [x]
(state (dec x)))
Run Code Online (Sandbox Code Playgroud)
效果很好,但由于我对 Clojure 完全陌生,我不知道这是否是
a) 干净的功能代码(因为奇怪甚至似乎有副作用?)
b) 应该在运行时更改函数的方式
我将不胜感激任何形式的建议!:) -扎库姆
我有一个初始化成本高的共享资源,因此我希望在整个系统中访问它(它基本上用于某些仪器,因此必须重量轻).所以我创建了一个管理设置和访问权限的模块.它执行资源的惰性初始化并将其存储在模块全局变量中.然后,我在整个系统中使用此模块的功能来操作资源.
- 现在我想知道是否(或多久)我将不得不重新初始化资源?
- 我知道对象是在CPython上(或更好地)零引用计数时收集的垃圾,但是存储在计为引用的模块中,即使此时模块没有被执行?
代码示例:这里我们有模块,其中_connect()很慢.我想在我的系统中使用report_safely()并最终尽可能少地调用_connect().
__metrics = None
def _connect():
global __metrics
client = SomeSlowToSetUpClient()
__metrics = SomeMetrics(client)
client.connect()
def report_safely():
if not __metrics:
_connect()
__metrics.execute_lightweight_code()
Run Code Online (Sandbox Code Playgroud) 我有一个语料库,我有一个词.对于语料库中每个单词的出现,我想得到一个包含前面的k个单词和单词后面的k个单词的列表.我在算法上做得很好(见下文),但我想知道NLTK是否为我错过了我的需求提供了一些功能?
def sized_context(word_index, window_radius, corpus):
""" Returns a list containing the window_size amount of words to the left
and to the right of word_index, not including the word at word_index.
"""
max_length = len(corpus)
left_border = word_index - window_radius
left_border = 0 if word_index - window_radius < 0 else left_border
right_border = word_index + 1 + window_radius
right_border = max_length if right_border > max_length else right_border
return corpus[left_border:word_index] + corpus[word_index+1: right_border]
Run Code Online (Sandbox Code Playgroud) 我有一个Java项目,并使用标准的maven原型来创建dir结构.它看起来像这样:
|-src/main/java
|-src/main/resources
|-target/classes
|- ...
Run Code Online (Sandbox Code Playgroud)
现在,我的一个类使用.properties文件来读取某些设置.我将它放在src/main/resources中并通读File propertiesFile = new File("./src/main/resources/starter.properties");.
当我使用eclipse运行配置时,一切正常.但是最近我尝试从我的控制台启动相同的Java类java some.package.Class,并且由于.class文件位于目标/类中,我得到了消息,即./src/main/resources/starter.properties不能找到.
我究竟做错了什么?.properties文件不应该位于resources-folder中,还是我必须使用其他方式加载它?