堆栈溢出.再一次,我在一个迫切需要的时候来找你,在疯狂的边缘岌岌可危地摇摇欲坠.这个问题 - 从标题中可以看出 - 是我在这里回答的其他几个问题的合并.
我有一个PyQt应用程序,我想将stdout和stderr流重新路由到我的GUI中的QTextEdit,没有延迟.
最初,我发现以下堆栈溢出答案: https ://stackoverflow.com/a/17145093/629404
这很有效,但有一点需要注意:如果在CPU处理相对较长的方法时多次更新stdout或stderr,则当主线程返回到应用程序循环时,所有更新都会同时显示.不幸的是,我有一些方法需要20秒才能完成(网络相关),因此应用程序变得无响应 - 并且QTextEdit不会更新 - 直到它们完成.
为了解决这个问题,我将所有GUI处理委托给主线程,并且我已经产生了第二个线程以处理更长的网络操作,使用pyqtSignals通知主线程工作何时完成并通过回来的结果.当我开始测试以这种方式编写的代码时,python解释器立刻开始崩溃而没有任何警告.
这是非常令人讨厌的地方:Python正在崩溃,因为 - 使用上面包含的链接中的类 - 我已经将sys.stdout/err流分配给QTextEdit小部件; PyQt小部件不能从除应用程序线程之外的任何线程修改,并且由于对stdout和stderr的更新来自我创建的辅助工作线程,因此它们违反了此规则.我已经注释掉了我重定向输出流的代码部分,果然,程序运行没有错误.
这让我回到原点,让我陷入困惑的境地; 假设我继续在主线程中处理GUI相关操作并处理辅助线程中的计算和更长时间的操作(我已经理解这是在用户触发事件时阻止应用程序阻塞的最佳方法),我该怎么办将Stdout和Stderr从两个线程重定向到QTextEdit小部件?上面链接中的类对于主线程来说效果很好,但是当更新来自第二个线程时,由于上述原因会杀死python.
这是夏天,所以我决定自己编写一个数据压缩程序,最好是用C代码编写.我有一个不错的初学者了解压缩是如何工作的.我只是有几个问题:
1)c是一种合适的编程语言来完成这项任务吗?
2)我应该在输入文件的字节中工作吗?或者以某种方式在二进制级别?
如果有人能给我一个正确方向的推动,我真的很感激.我想自己编写代码,而不是使用预先存在的压缩库或类似的东西.
问题:
我获得了很多IT行业职位(支持或开发)的职位名单; 我需要根据他们所代表的一般工作类型自动对它们进行分类.例如,IT支持分析师,服务台分析师......等等都可以属于IT支持小组.
目前的方法:
目前,我正在手动构建正则表达式模式来实现这一点,当我遇到应该包含在组中的新标题时,这会发生变化.例如,我最初使用的模式:
"(帮助|服务)办公桌"
匹配IT支持类型的工作,最终成为:
"(帮助|支持|服务)(DESK | ANALYST)"
这更具包容性.
题:
我觉得应该有一种相当直观的方式来使用某种算法自动构建这些正则表达式模式,但我不知道这可能如何工作......我过去曾简要介绍过NLP,但它非常陌生.我...有关如何使用/不使用NLP实现此类算法的任何建议?
编辑:
我正在考虑使用决策树,但它有一些限制,阻止它工作(在这种情况下)"开箱即用"; 例如,如果我构建了以下树:
(服务) - >(服务台) - >(支持)或 - >(分析师) ......支持和分析师都是服务台的孩子
假设我得到字符串"Level-1 Service Desk Analyst"...这应该使用上面的决策树进行分类,但它不会与树无法匹配(因为没有名为"Level"或"Level-1"的根节点").
我相信我现在正朝着正确的方向前进,但我需要额外的逻辑.例如,如果给出以下假设字符串:
我想我的算法创建如下所示:
(服务或帮助) - >(服务台) - >(分析师或支持) ...服务和帮助都是根节点,分析师和支持都是服务台的子女
基本上,我需要以下内容:我希望这个匹配算法能够将它呈现的字符串减少到最少数量的子字符串,这些子字符串有效地匹配给定组合中的所有字符串(最好使用决策树).
如果我不够清楚,请告诉我!
标题说明了一切; 我有一个SQL数据库突破接缝与在线对话文本.我已经做了最该项目在Python的,所以我想做到这一点使用Python的NLTK库(除非有强有力的理由不).
数据按线程,用户名和帖子进行组织.每个线程或多或少都侧重于讨论我有兴趣分析的类别的一个"产品".最终,当这个结束时,我希望每个用户对他们在某些时候讨论过的任何产品有一个估计的意见(喜欢/不喜欢某种交易).
那么,我想知道的是:
1)我如何确定每个线程的产品?我正在阅读有关关键字提取的信息...这是正确的方法吗?
2)如何根据帖子确定特定的用户情绪?从我有限的理解,我必须首先"训练"NLTK以识别某些意见指标,然后我只是确定这些单词出现在文本中的背景?
你可能已经猜到了,我以前没有NLP的经验.从我到目前为止的阅读,我认为我可以处理它.如果有人可以指出我正确的方向,即使只是一个基本和粗糙的工作模型现在将是伟大的.谷歌对我没有多大帮助.
PS我有权分析这些数据(如果重要的话)
我有一个调用函数getline()
,它从标准文本文件中读取行.这些行结束\r\n
,因为这是规范所要求的,因为它是VCARD文件的"互联网标准".
无论如何,我通过最新的GCC和Valgrind版本在OpenSUSE 11.3上通过Valgrind运行这个宝贝; 没有错误.但是,由于与此问题无关的原因,我将发行版转换为Back Track 4(基于Ubuntu),现在我得到了一公吨的Valgrind错误:
==21536== Conditional jump or move depends on uninitialised value(s)
==21536== at 0x40164A1: (within /lib/ld-2.11.1.so)
==21536== by 0x4007C04: (within /lib/ld-2.11.1.so)
==21536== by 0x4002A2C: (within /lib/ld-2.11.1.so)
==21536== by 0x4014206: (within /lib/ld-2.11.1.so)
==21536== by 0x4000C6C: (within /lib/ld-2.11.1.so)
==21536== by 0x4000856: (within /lib/ld-2.11.1.so)
==21536==
==21536== Conditional jump or move depends on uninitialised value(s)
==21536== at 0x40164AC: (within /lib/ld-2.11.1.so)
==21536== by 0x4007C04: (within /lib/ld-2.11.1.so)
==21536== by 0x4002A2C: (within /lib/ld-2.11.1.so)
==21536== by 0x4014206: (within /lib/ld-2.11.1.so)
==21536== …
Run Code Online (Sandbox Code Playgroud) Aloha,Stackoverflow.
我经常遇到Web应用程序,并对自己怀疑,"我怎么能编写一个与之接口的脚本/应用程序?" (纯粹是学术性的,不是出于垃圾邮件的目的!).
例如,网站上的; 人们已经编写了Python脚本来与网站连接并在不打开浏览器的情况下运行聊天......怎么样?我承认WEB编程不是我最强的领域,但我真的想知道如何从这些应用程序中提取正在使用的协议,并利用这些知识创建自定义应用程序并修改服务.
基本上,我怎样才能弄清楚网络应用程序的内部工作方式(即imeetzu.com,以便我可以编写代码来从我的桌面与它进行交互?
先感谢您!
python ×3
c ×2
algorithm ×1
compression ×1
javascript ×1
linux ×1
nlp ×1
nltk ×1
protocols ×1
pyqt ×1
regex ×1
stdout ×1
text-mining ×1
valgrind ×1
web ×1