我需要对一些文本文档进行聚类,并且一直在研究各种选项.看起来LingPipe可以在没有事先转换(向量空间等)的情况下聚集纯文本,但它是我见过的唯一明确声称可以处理字符串的工具.
有没有可以直接聚类文本的Python工具?如果没有,处理这个问题的最佳方法是什么?
我有一个表"项目",其中包含许多相关项目,如下所示:
ID Rel_ID Name RelRank
--- ------ ---- -------
1 1 foo 1
2 1 bar 2
3 1 zam 3
4 2 foo2 1
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取查询,因此具有相同Rel_ID的项目将出现在同一行中,如下所示:
Rel_ID Name1 Name2 Name3
------ ----- ----- -----
1 foo bar zam
2 foo2
Run Code Online (Sandbox Code Playgroud)
我尝试过多次选择表格:
SELECT k.Rel_ID, k.name 'Name1', k2.name 'Name2'
FROM item k, item k2
WHERE k.Rel_ID = k2.Rel_ID
Run Code Online (Sandbox Code Playgroud)
但这失败了.当然有一个转换或查询可以大大简化过程,我只是错过它,因为我之前没有以这种方式使用SQL.我错过了什么?
[编辑:添加了RelRank列,确实出现在我的数据中]
在Xcode中创建数据模型后,它会为每个对象关系抛出以下错误:
Consistency Error:
Setting the No Action Delete Rule on [object relationship] is an advanced setting
Run Code Online (Sandbox Code Playgroud)
什么是Xcode试图告诉我,我该如何回应?
在Xcode 4中,如果注释斜杠位于行的开头,则仅选择"取消注释"命令才能正常工作.
所以在这一行上使用⌘/:
// sudo make me a sandwich
Run Code Online (Sandbox Code Playgroud)
结果如下:
sudo make me a sandwich
Run Code Online (Sandbox Code Playgroud)
但是当评论缩进时:
//sudo make me a sandwich
Run Code Online (Sandbox Code Playgroud)
⌘/结果如下:
// //sudo make me a sandwich
Run Code Online (Sandbox Code Playgroud)
如果我的光标位于注释行中,我希望⌘/取消注释.期.有没有人有解决方法/修复此问题?
我写了一个方法来计算两个数组之间的余弦距离:
def cosine_distance(a, b):
if len(a) != len(b):
return False
numerator = 0
denoma = 0
denomb = 0
for i in range(len(a)):
numerator += a[i]*b[i]
denoma += abs(a[i])**2
denomb += abs(b[i])**2
result = 1 - numerator / (sqrt(denoma)*sqrt(denomb))
return result
Run Code Online (Sandbox Code Playgroud)
在大型阵列上运行它可能会非常慢.这个方法的优化版本会运行得更快吗?
更新:我已经尝试了迄今为止的所有建议,包括scipy.这是要击败的版本,结合迈克和史蒂夫的建议:
def cosine_distance(a, b):
if len(a) != len(b):
raise ValueError, "a and b must be same length" #Steve
numerator = 0
denoma = 0
denomb = 0
for i in range(len(a)): #Mike's optimizations:
ai = a[i] #only calculate …Run Code Online (Sandbox Code Playgroud) 我将JSON格式的数据从Web服务器映射到Objective C类(在Xcode中建模的NSManagedObjects,由Core Data处理).对于Objective C类的每个属性,我需要:
现在,我正在为每个属性对这个序列进行硬编码,因此每个属性都需要如下代码:
// dictObject is the JSON object converted into a NSDictionary,
// and person is the instance of the modeled class
if ([dictObject objectForKey:@"nameFirst"] &&
[dictObject objectForKey:@"nameFirst"] != [NSNull null]) {
person.nameFirst = [dictObject objectForKey:@"nameFirst"];
}
Run Code Online (Sandbox Code Playgroud)
除了需要大量代码来处理各种类之外,这看起来很奇怪而且很脆弱:任何名称更改(或语言本地化)都会导致映射失败.
必须有一个更好的方法......我错过了什么?
我的一个 Python 脚本以交互模式运行,但从命令行运行时失败。不同之处在于,当从命令行运行时,它从一个坏的 .egg 文件中导入模块,而当以交互方式运行时,它使用当前目录中我的固定(解压缩)版本。
我的问题有两个方面:a) 为什么 Python 从这些位置运行时加载模块的方式不同,以及 b) 我有哪些解决方法?
我正在尝试使用ErgoEmacs模式,看看我是否可以更舒适地使用Emacs.它的一些键绑定非常直观,但在很多情况下我不想直接替换默认值.
例如,在ErgoEmacs的导航快捷键结构的上下文中,Mh作为Ca的替代品是有意义的 - 但我希望能够同时使用两者,而不仅仅是Mh.我试过简单地复制命令:
;; Move to beginning/ending of line
(defconst ergoemacs-move-beginning-of-line-key (kbd "C-a")) ; original
(defconst ergoemacs-move-end-of-line-key (kbd "C-e")) ; original
(defconst ergoemacs-move-beginning-of-line-key (kbd "M-h")) ; ergoemacs
(defconst ergoemacs-move-end-of-line-key (kbd "M-H")) ; ergoemacs
Run Code Online (Sandbox Code Playgroud)
但是Emacs只是用第二个键覆盖了第一个键绑定.解决这个问题的最佳方法是什么?
当我在字符串中插入换行符时,Xcode会抛出各种错误.例如,这失败了:
if (newMaximumNumberOfSides > 12) {
NSLog(@"Invalid maximum number of sides: %i is greater than
the maximum of 12 allowed.", newMaximumNumberOfSides);
}
Run Code Online (Sandbox Code Playgroud)
但这有效:
if (newMaximumNumberOfSides > 12) {
NSLog(@"Invalid maximum number of sides: %i is greater than the maximum of 12 allowed.",
newMaximumNumberOfSides);
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢前者,因为它看起来更清晰(较短的线条),但代码中断了.处理这个问题的最佳方法是什么?(子问题:这是在任何语法指南中引用的吗?我搜索了所有书籍的"换行符"都没有效果.)
写入文本文件时,某些file.write实例后面跟着输出文件中的换行符,而其他实例则没有.我不希望,除非我告诉他们发生的换行符.码:
for doc,wc in wordcounts.items():
out.write(doc) #this works fine, no linebreak
for word in wordlist:
if word in wc: out.write("\t%d" % wc[word]) #linebreaks appear
else: out.write("\t0") #after each of these
out.write("\n") #this line had mixed spaces/tabs
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
更新
我应该从代码粘贴到SO中获取线索.由于某种原因,最后一行中有空格和制表符的混合,因此在TextMate中,它在视觉上出现在"for word ..."循环之外 - 但是解释器将其视为该循环的一部分.将空格转换为制表符解决了这个问题.
感谢您的输入.
python ×5
objective-c ×3
xcode ×3
iphone ×2
arrays ×1
core-data ×1
distance ×1
egg ×1
emacs ×1
file ×1
interactive ×1
ios ×1
json ×1
key-bindings ×1
keyboard ×1
line-breaks ×1
list ×1
mysql ×1
nlp ×1
optimization ×1
performance ×1
pivot ×1
sql ×1
xcode4 ×1