Chinese_segment_augment
Chinese_segment_augment copied to clipboard
想了解一下算法的复杂度是多少?是否还有提升的空间
文本变长以后非常耗时
有的,主要是预先jieba分词的时候没有并行处理。另外字典树取值也可以并行化。这个只是一个demo,欢迎大家一起改进
node的child从list改成dict就可以了,算法复杂度从O(n)提升为O(1),瓶颈在child的遍历访问
兄弟,程序以否优化一下性能,400M语料搞了2晚上不成功,node的child从list改成dict速度也快不起来,能否修改成并行执行,目前程序只能单核跑,太慢了
兄弟,程序以否优化一下性能,400M语料搞了2晚上不成功,node的child从list改成dict速度也快不起来,能否修改成并行执行,目前程序只能单核跑,太慢了
附件是我改过的文件,应该可以的,不管这个方案太吃内存了,我用的4G内存只能处理20M的数据
兄弟,程序以否优化一下性能,400M语料搞了2晚上不成功,node的child从list改成dict速度也快不起来,能否修改成并行执行,目前程序只能单核跑,太慢了
附件是我改过的文件,应该可以的,不管这个方案太吃内存了,我用的4G内存只能处理20M的数据
node的child从list改成dict了,非常感谢,我也修改了一版model.py,但是功夫不到家,还是很慢 # 正常加载 for count, char in enumerate(word): found_in_child = False # 在节点中找字符 if char in node.child: node = node.child[char] found_in_child = True
兄弟,程序以否优化一下性能,400M语料搞了2晚上不成功,node的child从list改成dict速度也快不起来,能否修改成并行执行,目前程序只能单核跑,太慢了
附件是我改过的文件,应该可以的,不管这个方案太吃内存了,我用的4G内存只能处理20M的数据
试了您的代码,236M文本,32G内存,挂了,内存不够,程序估计还有问题,我修改的,能跑下去,但是慢不少
大佬们有什么改进吗 我这边也是速度太慢了
建议大佬们,你们既然优化了,就提交pr,这样方便迭代优化!(不做伸手党)
- 把词典内容改小一点,取前100个就行(主要是项目提供词库太大了)
- 然后使用python多进程,我最高能开到1000个进程
3427条句子 -- 1min 9s

我还在加功能,可以遍历tree 的,测试稳定后,提交pr
model.py.txt 你们优化过的报错 AttributeError: 'list' object has no attribute 'get' 什么鬼
瓶颈主要在很多地方遍历树每一级的子节点。修改方式先把树的构建给改了,改成字典格式。上面mode.py在读的时候没有修改。我这里提交各可运行的文件吧。运行前需删除data目录的root.pkl
瓶颈主要在很多地方遍历树每一级的子节点。修改方式先把树的构建给改了,改成字典格式。上面mode.py在读的时候没有修改。我这里提交各可运行的文件吧。运行前需删除data目录的root.pkl
201行函数名要改成find_word,不然报错
感觉作者的代码分享,将child由list改为dict的时候,其他地方同步修改(比如循环判断,获取child等),5w条评论文本由5小时变为10秒
瓶颈主要在很多地方遍历树每一级的子节点。修改方式先把树的构建给改了,改成字典格式。上面mode.py在读的时候没有修改。我这里提交各可运行的文件吧。运行前需删除data目录的root.pkl model.py.txt
201行函数名要改成find_word,不然报错
改了之后也有问题 word[0], word[1], word[2] = word[1], word[2], word[0] TypeError: 'tuple' object does not support item assignment
瓶颈主要在很多地方遍历树每一级的子节点。修改方式先把树的构建给改了,改成字典格式。上面mode.py在读的时候没有修改。我这里提交各可运行的文件吧。运行前需删除data目录的root.pkl model.py.txt 201行函数名要改成find_word,不然报错
改了之后也有问题 word[0], word[1], word[2] = word[1], word[2], word[0] TypeError: 'tuple' object does not support item assignment
a, b, c = word[1], word[2], word[0] word = (a, b, c) 这样再改一下
没想到大家还在更新hhhh
建议大佬们,你们既然优化了,就提交pr,这样方便迭代优化!(不做伸手党)
- 把词典内容改小一点,取前100个就行(主要是项目提供词库太大了)
- 然后使用python多进程,我最高能开到1000个进程
3427条句子 -- 1min 9s
我还在加功能,可以遍历tree 的,测试稳定后,提交pr
我测试多进程的时候,因为只有同一颗树root,多个进程运行的时候就找不到root了,想请教你是怎么做的呢? 报错内容如下: root.add(d) NameError: name 'root' is not defined
感觉作者的代码分享,将child由list改为dict的时候,其他地方同步修改(比如循环判断,获取child等),5w条评论文本由5小时变为10秒
请问可以分享一下你修改的代码么?谢谢。
我这里会报错出现 KeyError:
某个词不在 left与right 中
result[key] = (values[0] + min(left[d], right[d])) * values[1]
瓶颈主要在很多地方遍历树每一级的子节点。修改方式先把树的构建给改了,改成字典格式。上面mode.py在读的时候没有修改。我这里提交各可运行的文件吧。运行前需删除data目录的root.pkl
厉害了。从一个小时到十多秒。感谢感谢。
我这里会报错出现 KeyError: 某个词不在 left与right 中
result[key] = (values[0] + min(left[d], right[d])) * values[1]
碰到了同样的问题
model.py.txt 你们优化过的报错 AttributeError: 'list' object has no attribute 'get' 什么鬼
删除data目录的root.pkl
我这里会报错出现 KeyError: 某个词不在 left与right 中
result[key] = (values[0] + min(left[d], right[d])) * values[1]碰到了同样的问题
想知道怎么解决的呀