小编Zak*_*kum的帖子

如何测试运行我的代码的机器上是否已安装nltk资源?

我刚开始我的第一个NLTK项目,并对正确的设置感到困惑.我需要几个资源,如Punkt Tokenizer和maxent pos tagger.我自己使用GUI下载它们nltk.download().对于我的合作者,我当然希望自动下载这些内容.我没有在文档中找到任何惯用代码.

我应该把nltk.data.load('tokenizers/punkt/english.pickle')它们放进代码中吗?这是在每次运行脚本时下载资源吗?我是否向用户(即我的共同开发者)提供了有关下载内容以及为什么需要这么长时间的反馈?那里必须有适合工作的装备,对吗?:)

//编辑要探讨我的问题:
如何测试运行我的代码的机器上是否已安装nltk资源(如Punkt Tokenizer),如果不是,则安装它?

python nlp nltk

16
推荐指数
1
解决办法
4679
查看次数

urllib2 - 发布请求

我尝试用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)

python urllib2 http-request

13
推荐指数
2
解决办法
4万
查看次数

Erlang:优雅的tuple_to_list/1

我正在通过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)

非常感谢你的想法.:)

erlang functional-programming

12
推荐指数
2
解决办法
6075
查看次数

Haskell中的闭包和列表推导

我此刻正在玩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程序员会采用哪种方式?这两种解决方案有什么区别?

closures haskell coding-style list-comprehension

6
推荐指数
1
解决办法
456
查看次数

使用 Clojure 在运行时动态绑定函数

我今天开始使用 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) 应该在运行时更改函数的方式

我将不胜感激任何形式的建议!:) -扎库姆

binding coding-style clojure

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

Python:模块全局变量的生命周期

我有一个初始化成本高的共享资源,因此我希望在整个系统中访问它(它基本上用于某些仪器,因此必须重量轻).所以我创建了一个管理设置和访问权限的模块.它执行资源的惰性初始化并将其存储在模块全局变量中.然后,我在整个系统中使用此模块的功能来操作资源.
- 现在我想知道是否(或多久)我将不得不重新初始化资源?
- 我知道对象是在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)

python lifecycle global cpython

4
推荐指数
1
解决办法
2538
查看次数

NLTK:查找单词大小为2k的上下文

我有一个语料库,我有一个词.对于语料库中每个单词的出现,我想得到一个包含前面的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)

python nlp nltk collocation

3
推荐指数
1
解决办法
1179
查看次数

为什么执行时不能读取/ src/main/resources下的文件?

我有一个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中,还是我必须使用其他方式加载它?

java eclipse maven

2
推荐指数
1
解决办法
2538
查看次数