使用空格填充标点符号的有效方法是什么?
输入:
s = 'bla. bla? bla.bla! bla...'
Run Code Online (Sandbox Code Playgroud)
期望的输出:
s = 'bla . bla ? bla . bla ! bla . . .'
Run Code Online (Sandbox Code Playgroud)
评论:
.dmp是在Oracle 10g(Express Edition)中构建的表的转储,其中一个字段是CLOB类型.
我试图简单地将表导出到xml/csv文件然后将其导入MySql,但导出只是忽略了CLOB字段...(我之前使用的是sqldeveloper).
我注意到这篇文章解释了如何将CLOB提取到文本文件,但似乎错过了对其他字段或至少主键字段的处理.是否可以通过创建完整表的csv?(我根本不熟悉plsql)
随着蛮力的方法,我可以使用我的python接口简单地查询所有记录并将其假脱机到一个平面文件,但我担心它将需要一个LOOOONG时间(查询所有记录用ascii替换所有本机逗号. ..)
多谢你们!
我正在使用pydot在python中绘制图形.我想代表一个决策树,比如说(a1,a2,a3是属性,两个类是0和1:
a1>3
/ \
a2>10 a3>-7
/ \ / \
1 0 1 0
Run Code Online (Sandbox Code Playgroud)
但是,使用pydot,只创建了两个叶子,树看起来像这样(png附加):
a1>3
/ \
a2>10 a3>-7
| X |
1 0
Run Code Online (Sandbox Code Playgroud)
现在,在这个简单的情况下,逻辑很好,但在较大的树中,属于不同分支的凌乱的内部节点是统一的.
我正在使用的简单代码是:
import pydot
graph = pydot.Dot(graph_type='graph')
edge = pydot.Edge("a_1>3", "a_2>10")
graph.add_edge(edge)
edge = pydot.Edge("a_1>3", "a_3>-7")
graph.add_edge(edge)
edge = pydot.Edge("a_2>10", "1")
graph.add_edge(edge)
edge = pydot.Edge("a_2>10", "0")
graph.add_edge(edge)
edge = pydot.Edge("a_3>-7", "1")
graph.add_edge(edge)
edge = pydot.Edge("a_3>-7", "0")
graph.add_edge(edge)
graph.write_png('simpleTree.png')
Run Code Online (Sandbox Code Playgroud)
我还尝试创建不同的节点对象而不是创建边缘,而不是将其添加到图形中,但似乎pydot会检查节点池中是否有相同名称的节点而不是创建新节点.
有任何想法吗?谢谢!

这个问题有两个部分(也许是一个解决方案?):
来自稀疏矩阵的样本向量:是否有一种从稀疏矩阵中采样向量的简单方法?当我尝试使用random.sample对线进行采样时,我得到一个TypeError:稀疏矩阵长度不明确.
from random import sample
import numpy as np
from scipy.sparse import lil_matrix
K = 2
m = [[1,2],[0,4],[5,0],[0,8]]
sample(m,K) #works OK
mm = np.array(m)
sample(m,K) #works OK
sm = lil_matrix(m)
sample(sm,K) #throws exception TypeError: sparse matrix length is ambiguous.
Run Code Online (Sandbox Code Playgroud)
我目前的解决方案是从矩阵中的行数进行采样,然后使用getrow(),例如:
indxSampls = sample(range(sm.shape[0]), k)
sampledRows = []
for i in indxSampls:
sampledRows+=[sm.getrow(i)]
Run Code Online (Sandbox Code Playgroud)
还有其他有效/优雅的想法吗?密集矩阵大小为1000x30000,可能更大.
从稀疏矢量列表构造稀疏矩阵:现在想象我有采样矢量的列表sampledRows,如何将其转换为稀疏矩阵而不将其密集化,将其转换为列表列表然后将其传递给lil_matrix?
有人能指出openNLP NameFinder模块使用的算法吗?代码很复杂,只有很少的文档记录,并作为一个黑盒子(提供默认模型)使用它给我的印象是它主要是启发式的.以下是输入和输出的一些示例:
输入:
约翰史密斯很沮丧.
约翰史密斯很沮丧.
巴拉克奥巴马感到沮丧.
雨果查韦斯很沮丧.(不再)
杰夫阿特伍德很沮丧.
刘冰对openNLP NER模块感到沮丧.
Noam Chomsky对这个世界感到沮丧.
杰登史密斯很沮丧.
史密斯杰登很沮丧.
Lady Gaga很沮丧.
加加女士很沮丧.
加加太太很沮丧.
杰登很沮丧.
刘先生很沮丧.
输出(我将钻石换成方括号):
[开始:人]约翰史密斯[END]感到沮丧.
约翰史密斯很沮丧.
[开始:人]巴拉克奥巴马[结束]感到沮丧.
雨果查韦斯很沮丧.(不再)
[开始:人]杰夫阿特伍德[END]感到沮丧.
刘冰对openNLP NER模块感到沮丧.
[开始:人] Noam Chomsky [END]对这个世界感到沮丧.
Jayden [START:person] Smith [END]感到沮丧.
[开始:人]史密斯[结束] [开始:人]杰登[结束]感到沮丧.
Lady Gaga很沮丧.
加加女士很沮丧.
加加太太很沮丧.
杰登很沮丧.
刘先生很沮丧.
模型似乎只是简单地学习了在训练数据中注释的固定名称列表,并允许一些平铺和组合.两个值得注意的(FN)示例是:
- >我很困惑和沮丧,如果有人能指出我的算法(或验证它很糟糕),我会很感激.
ps斯坦福和UIUC NER系统的表现要好得多,但有些微妙的差异很有意思,但偏离主题(这个问题太长了)
在交互模式下使用python导入模块,然后如果模块被更改(错误修复或其他),可以简单地使用reload()命令.
但是,如果我没有导入整个模块并使用'from M import f,g'import语句,该怎么办?有没有办法重新进口g?
(我尝试通过'del g'从参数表中删除该函数并从目录中删除.pyc文件.它没有帮助.当我重新导入函数'从M import g'时,旧的g被加载了).
我在一个大而稀疏的矩阵〜(1000000x1000)上使用k-means和matlab.现在这里是问题 - 使用余弦相似度作为距离函数我得到"内存不足.在几分钟内键入HELP MEMORY for your options"msg.但是,如果我使用欧氏距离,它会完美运行(相同的矩阵).
这有点奇怪,因为距离是成对计算的,并且每个距离计算不应该需要多于一个小的常数存储器.
当在较小的矩阵(1000x1000,尽管不稀疏)上使用k-means时,余弦效果很好.
技术细节:机器是64位,8GB RAM.如果你想尝试:矩阵可以在这里找到(它在发送空间上,所以它可以使用几周).
该文件采用稀疏格式:[row]\t [column]\t [value] \n
matlab代码:
f=load(filename);
v=spconvert(f);
c=kmeans(v,9);
c=kmeans(v,9,'distance','cosine');
Run Code Online (Sandbox Code Playgroud)
关于内存使用量差异的任何想法btw.余弦和欧几里德的距离?
有关如何处理它并在大矩阵上实际使用余弦的任何想法吗?
谢谢!
我试图绘制一个水平堆积条形图,但在顶部和底部获得令人讨厌的大边距。我想摆脱它或控制大小。
这是一个示例代码和图:
from random import random
Y = ['A', 'B', 'C', 'D', 'E','F','G','H','I','J', 'K']
y_pos = np.arange(len(Y))
data = [(r, 1-r) for r in [random() for i in range(len(Y))]]
print data
a,b = zip(*data)
fig = plt.figure(figsize=(8,16))
ax = fig.add_subplot(111)
ax.barh(y_pos, a,color='b',align='center')
ax.barh(y_pos, b,left=a,color='r',align='center')
ax.set_yticks(y_pos)
ax.set_yticklabels(Y, size=16)
ax.set_xlabel('X label', size=20)
plt.xlim(0,1) #removing the extra x on the right side
Run Code Online (Sandbox Code Playgroud)
如果要重新创建确切的数字,请对创建附加数字(“数据”)的序列进行采样:
[(0.2180251581652276,0.7819748418347724),(0.20639063565084814,0.7936093643491519),(0.5402540115461549,0.45974598845384507),(0.39283183355790896,0.607168166442091),(0.5082547993681953,0.4917452006318047),(0.02489004061858613,0.9751099593814139),(0.25902114354397665,0.7409788564560233),(0.12032683729286475,0.8796731627071352),( 0.41578415717252204, 0.584215842827478), (0.5860546624151288, 0.4139453375848712), (0.20982525842827478), (0.20982523737740)4052373774040

我希望在“K”顶部以及 x 轴和“A”之间有一个更小的间隙。如果我将 16 更改为:
fig = plt.figure(figsize=(8,16))
Run Code Online (Sandbox Code Playgroud)
到 10 一切都在缩小,但利润率仍然比较大。
有任何想法吗?谢谢!
我正在使用Ubuntu 12.4,我安装了matlab.通常,为了从终端调用matlab,我必须输入'〜/ MATLAB/bin/matlab'.显然这有点烦人所以我通过添加别名这个命令
alias matlab='sh ~/MATLAB/bin/matlab'
Run Code Online (Sandbox Code Playgroud)
到.bashrc.现在一切都很黄金,在终端(bash)中输入'matlab'可以在任何目录下运行.
当我试图从python脚本调用Matlab时出现问题.有这样的声明:
>>> commands.getoutput('matlab')
'sh: 1: matlab: not found'
Run Code Online (Sandbox Code Playgroud)
因为似乎别名没有得到承认.只想确认一下:
>>> commands.getoutput('~/MATLAB/bin/matlab')
Run Code Online (Sandbox Code Playgroud)
就像一个魅力,和
>>> commands.getoutput('echo $SHELL')
'/bin/bash'
Run Code Online (Sandbox Code Playgroud)
确实验证python正试图在bash中执行cmd ...
知道这里发生了什么吗?为什么别名被认可?如何/可以修复?
谢谢!