小编gui*_*ism的帖子

倒排索引和普通旧索引之间有什么区别?

在软件工程中,我们一直在创建索引(例如,在数据库中),但我也听到很多人谈论倒排索引.这两者之间有什么根本不同的东西吗?他们听起来像是一回事.

indexing terminology

89
推荐指数
6
解决办法
4万
查看次数

一个猴子如何在python中修补一个函数?

我在使用另一个功能从另一个模块替换功能时遇到了麻烦,这让我发疯了.

假设我有一个模块bar.py,如下所示:

from a_package.baz import do_something_expensive

def a_function():
    print do_something_expensive()
Run Code Online (Sandbox Code Playgroud)

我有另一个模块,看起来像这样:

from bar import a_function
a_function()

from a_package.baz import do_something_expensive
do_something_expensive = lambda: 'Something really cheap.'
a_function()

import a_package.baz
a_package.baz.do_something_expensive = lambda: 'Something really cheap.'
a_function()
Run Code Online (Sandbox Code Playgroud)

我希望得到结果:

Something expensive!
Something really cheap.
Something really cheap.
Run Code Online (Sandbox Code Playgroud)

但相反,我得到了这个:

Something expensive!
Something expensive!
Something expensive!
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python monkeypatching

76
推荐指数
3
解决办法
4万
查看次数

如何将json序列化比Python中的yaml序列化快得多?

我的代码在很大程度上依赖于yaml来进行跨语言的序列化,并且在加速某些事情时,我注意到yaml与其他序列化方法(例如,pickle,json)相比非常慢.

所以真正让我感到震惊的是,当输出几乎相同时,json比yaml快得多.

>>> import yaml, cjson; d={'foo': {'bar': 1}}
>>> yaml.dump(d, Dumper=yaml.SafeDumper)
'foo: {bar: 1}\n'
>>> cjson.encode(d)
'{"foo": {"bar": 1}}'
>>> import yaml, cjson;
>>> timeit("yaml.dump(d, Dumper=yaml.SafeDumper)", setup="import yaml; d={'foo': {'bar': 1}}", number=10000)
44.506911039352417
>>> timeit("yaml.dump(d, Dumper=yaml.CSafeDumper)", setup="import yaml; d={'foo': {'bar': 1}}", number=10000)
16.852826118469238
>>> timeit("cjson.encode(d)", setup="import cjson; d={'foo': {'bar': 1}}", number=10000)
0.073784112930297852
Run Code Online (Sandbox Code Playgroud)

PyYaml的CSafeDumper和cjson都是用C语言编写的,所以这不是C和Python速度问题.我甚至添加了一些随机数据来查看cjson是否正在进行任何缓存,但它仍然比PyYaml快.我意识到yaml是json的超集,但是如此简单的输入,yaml序列化器怎么能慢2个数量级呢?

python serialization json yaml

53
推荐指数
5
解决办法
2万
查看次数

Ruby相当于NumPy

我希望能够获得平均值,中位数,百分位数等等.我一直在寻找并且找不到类似的东西.我意识到Ruby在科学界并没有被广泛使用,但至少存在一个Ruby中非常基本的数学库,对吗?

ruby numpy

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

在django中对查询集运行"解释"的简便方法

看起来直接从Django中的查询集运行"解释"应该很容易,但我没有看到任何明显的如何做到这一点,并且"解释"在文档中搜索是一件困难的事情.

django sql-execution-plan

26
推荐指数
3
解决办法
6688
查看次数

使用C实现其他语言是否以任何方式限制了他们的设计?

似乎在过去20年中出现的大多数新编程语言都是用C语言编写的.这完全有道理,因为C可以看作是一种可移植的汇编语言.但我很好奇的是,这是否以任何方式限制了语言的设计.是什么促使我的问题是考虑如何在Python中直接使用C堆栈来调用函数.显然,编程语言设计师可以用他们想要的任何语言做任何他们想做的事情,但在我看来,你选择编写新语言的语言会让你处于某种心态,并给你一些难以忽视的捷径.这些语言的其他特征是否来自于用该语言编写(好的还是坏的)?

c compiler-construction programming-languages stackless

22
推荐指数
3
解决办法
717
查看次数

在Python中创建名为"id"的属性是不是很糟糕?

我知道有一个名为id的函数,所以我不会创建一个函数或一个名为id的变量,但是对象的属性呢?

python

20
推荐指数
2
解决办法
3121
查看次数

Python中的任何yaml库都支持将长字符串转储为块文字或折叠块?

我希望能够转储一个字典,其中包含我希望在块样式中具有的长字符串以便于阅读.例如:

foo: |
  this is a
  block literal
bar: >
  this is a
  folded block
Run Code Online (Sandbox Code Playgroud)

PyYAML支持使用这种样式加载文档,但我似乎找不到以这种方式转储文档的方法.我错过了什么吗?

python yaml pyyaml

19
推荐指数
2
解决办法
6447
查看次数

在不同语言语法之间转换正则表达式的工具?

是否有工具将正则表达式从一种流行语言的语法转换为另一种?例如,Python风格的正则表达式到Java风格的正则表达式?

或者至少,是否有人制定了一套规则来进行这些转换?

显然,一些构造将无法转换.

python java regex perl

17
推荐指数
2
解决办法
4728
查看次数

我如何操纵解析树?

我一直在玩自然语言解析树并以各种方式操纵它们.我一直在使用斯坦福大学的Tregex和Tsurgeon工具,但代码很混乱,并不适合我的Python环境(这些工具是Java,不适合调整).我想要一个工具集,当我需要更多功能时,它可以轻松进行黑客攻击.还有其他工具非常适合在树上进行模式匹配,然后操纵那些匹配的分支吗?

例如,我想将以下树作为输入:

(ROOT
  (S
    (NP
      (NP (NNP Bank))
      (PP (IN of)
        (NP (NNP America))))
    (VP (VBD used)
      (S
        (VP (TO to)
          (VP (VB be)
            (VP (VBN called)
              (NP
                (NP (NNP Bank))
                (PP (IN of)
                  (NP (NNP Italy)))))))))))
Run Code Online (Sandbox Code Playgroud)

和(这是一个简化的例子):

  1. 找到标签为NP的任何节点,其中第一个孩子的标签为NP,一些后代名为"Bank",第二个孩子的标签为PP.
  2. 如果匹配,则获取PP节点的所有子节点并将它们移动到匹配的NP子节点的末尾.

例如,采取树的这一部分:

(NP
  (NP (NNP Bank))
  (PP (IN of)
    (NP (NNP America))))
Run Code Online (Sandbox Code Playgroud)

把它变成这个:

(NP
  (NP (NNP Bank) (IN of) (NP (NNP America))))
Run Code Online (Sandbox Code Playgroud)

由于我的输入树是S表达式,我考虑使用Lisp(嵌入到我的Python程序中)但是我已经写了很长时间,我在Lisp中编写了一些重要内容,我不知道从哪里开始.

什么是描述模式的好方法?什么是描述操纵的好方法?什么是思考这个问题的好方法?

lisp nlp pattern-matching stanford-nlp s-expression

15
推荐指数
3
解决办法
3540
查看次数