pathetique 最近的时间轴更新
pathetique

pathetique

V2EX 第 600246 号会员,加入于 2022-11-03 23:28:20 +08:00
pathetique 最近回复了
7 天前
回复了 pathetique 创建的主题 Python 弱极了,请教 Python 多线程如何快速开始
@zhzy 非常感谢,我去读下 pathlib 的文档~
7 天前
回复了 pathetique 创建的主题 Python 弱极了,请教 Python 多线程如何快速开始
@aitianci 嗯嗯,其实最大的价值、不是在于观察已有的成形的 pattern 或者单词,而恰恰是一些直观不熟悉但统计上又显著的词汇、语法结构或者说法。比如很多语言中动词-主语-宾语顺序多,但某些地方开始突然高密度调用其他语序;或者很多语言的果-因表达多,但如果突然用因-果连词;或者突然用佶屈聱牙的、甚至字典上没有的词,就很可能有很重要的、非母语者不容易看出的情绪或者信息。反常的信息最珍贵
7 天前
回复了 pathetique 创建的主题 Python 弱极了,请教 Python 多线程如何快速开始
奇怪为啥有些帖子回复发不出去说要注册 1001 天……1001nights 吗……
7 天前
回复了 pathetique 创建的主题 Python 弱极了,请教 Python 多线程如何快速开始
再问一个白痴问题,我和您方案的最大差别是不是创建的对象是不是 hashable 的差别?大概就是 30 楼大哥说 list 的效率低,hash 效率高的问题?
非常非常感谢两位的时间!知道大家都挺忙……
7 天前
回复了 pathetique 创建的主题 Python 弱极了,请教 Python 多线程如何快速开始
@zhzy
@ispinfx
非常感谢
7 天前
回复了 pathetique 创建的主题 Python 弱极了,请教 Python 多线程如何快速开始
@zhzy 跑通了,非常感谢!但是您的代码我还在慢慢理解中……因为不太理解 counter.get 或者 counter.items 这样的命令。是需要去 pathlib 的档案找意思吗?
7 天前
回复了 pathetique 创建的主题 Python 弱极了,请教 Python 多线程如何快速开始
@hellojukay 感恩,我马上学一下 linklist 和 hash……
7 天前
回复了 pathetique 创建的主题 Python 弱极了,请教 Python 多线程如何快速开始
@zhzy 谢过,我去试试用 panda !不用中文的分词 library 是因为用中文只是试试,其实主业是古代西方语言,最后需要 n-gram skipgram flexgram 之类的还是要自己微调很多自己写然后穷尽搜索。请问 regex 或者 panda 有好的入门建议吗?还,就 GPT 就好?
7 天前
回复了 pathetique 创建的主题 Python 弱极了,请教 Python 多线程如何快速开始
@Kinnice @Weixiao0725 @adoni @aijam @coderluan @fyq @killva4624 @laqow @litguy @liyafe1997

非常感谢各位的帮助!就不一一回复,几位大佬我一起感谢先

先非常感谢对多线程和进程的区分,我已经开始用 multiprocessing module 了,在我的 M1max 上基本上十个小时可以做完,对于雍正可以接受了。但是随着搜索对象正则式的复杂化我怀疑还要更久更久,而且雍正才干几年,乾隆的起居录估计有十倍大,可能个人电脑还是不够。

然后几位大佬怀疑算法有没有问题,我也不知道哪里可以改善的。我把最简单的版本(算二字成词率)代码放在这里,辣大家的眼可能,但是真心请问如果有耐心看完的大佬:有没有改进的空间?如果是单线程的话,我可以从头到尾扫描,扫过的不再碰,复杂度是 n^2/2 ,但是因为多线程,把文本分成多块就没头没尾的,复杂度是 n^2 但是可以多核平均。


checkdict = [] #已经查过的单词词库
list = [] #文本本身
step = 100000 #每个机器人负责多大块

with open('yong3.txt', 'r') as file:
contents = file.read()
for chr in contents:
if chr != '\n' and chr != ' ' and chr != '。' and chr != '、' and chr != '○' and chr != '\u3000': #有些奇怪的字符去掉
list.append(chr)
length = len(list) #雍正大概 100 万字


import multiprocessing.pool #import the multiprocessing module

def worker(num):
"""Worker function for the process"""
print(f'Worker {num} starting')

count = 0
for i in range(0+step*num,min(step+step*num,length-2)): #每个机器人负责 #step 长度的文字
if (list[i:i+2] not in checkdict): #如果不在字典里
count = 0
for j in range(0,length-2): #全本比对,因为分块似乎只能这么做,不能从 i 开始?
if list[i:i+2] == list[j:j+2]:
count = count + 1
checkdict.append(list[i:i+2]) #check 完,添进已查字典
if count > 350: #出现次数高于 350 次的字显示出来
print (list[i:i+2])
print(i, count, f"{num}th worker at percentage = {format((i/step-num)*100, '.2f')}%" )
print(f'Worker {num} finished')


还是挺好玩的,发现很多有趣的事实,比如弄死了年羹尧雍正还常提,比如他喜欢的十三弟其实没那么常提。我其实拿清史资料是因为手头方便,下一步更想用 Colibri Core 处理黏着语(黏着语,比中文不一样的地方在于一个词根会有很多变化,比如 love, loves, loving )。

想问调用 Calobri Core 这样的库啊包的各位大佬还有什么建议呢?还是照着 ChatGPT 的做?(我的 Python 真的很生,刚学,小时候会用 c )

然后想问下,如果有人有时间帮小的看了这个案例,这种算法用显卡( CUDA )来帮助做会有帮助吗?或者我下一步弄大了,比如一千万字的更加模糊的搜索(比如犹太注经动辄几千万),有什么好的建议提速呢?可以借学校的服务器或者云吗?但是感觉云的 CPU 频率应该也一般。

非常感谢大家指路!小的刚刚用电脑编程对付这些,求拍求建议求更多工具。
8 天前
回复了 sillydaddy 创建的主题 程序员 似曾相识,怎么用人工神经网络表达?
@leaflxh 我觉得是“多线接近收敛”但无一通路
关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2398 人在线   最高记录 5634   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 05:23 · PVG 13:23 · LAX 22:23 · JFK 01:23
Developed with CodeLauncher
♥ Do have faith in what you're doing.