国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python多進程提取處理大量文本的關(guān)鍵詞方法

2020-02-15 21:39:48
字體:
供稿:網(wǎng)友

經(jīng)常需要通過python代碼來提取文本的關(guān)鍵詞,用于文本分析。而實際應(yīng)用中文本量又是大量的數(shù)據(jù),如果使用單進程的話,效率會比較低,因此可以考慮使用多進程。

python的多進程只需要使用multiprocessing的模塊就行,如果使用大量的進程就可以使用multiprocessing的進程池--Pool,然后不同進程處理時使用apply_async函數(shù)進行異步處理即可。

實驗測試語料:message.txt中存放的581行文本,一共7M的數(shù)據(jù),每行提取100個關(guān)鍵詞。

代碼如下:

#coding:utf-8import sysreload(sys)sys.setdefaultencoding("utf-8")from multiprocessing import Pool,Queue,Processimport multiprocessing as mp import time,randomimport osimport codecsimport jieba.analysejieba.analyse.set_stop_words("yy_stop_words.txt")def extract_keyword(input_string):	#print("Do task by process {proc}".format(proc=os.getpid()))	tags = jieba.analyse.extract_tags(input_string, topK=100)	#print("key words:{kw}".format(kw=" ".join(tags)))	return tags#def parallel_extract_keyword(input_string,out_file):def parallel_extract_keyword(input_string):	#print("Do task by process {proc}".format(proc=os.getpid()))	tags = jieba.analyse.extract_tags(input_string, topK=100)	#time.sleep(random.random())	#print("key words:{kw}".format(kw=" ".join(tags)))	#o_f = open(out_file,'w')	#o_f.write(" ".join(tags)+"/n")	return tagsif __name__ == "__main__":	data_file = sys.argv[1]	with codecs.open(data_file) as f:		lines = f.readlines()		f.close()		out_put = data_file.split('.')[0] +"_tags.txt" 	t0 = time.time()	for line in lines:		parallel_extract_keyword(line)		#parallel_extract_keyword(line,out_put)		#extract_keyword(line)	print("串行處理花費時間{t}".format(t=time.time()-t0))		pool = Pool(processes=int(mp.cpu_count()*0.7))	t1 = time.time()	#for line in lines:		#pool.apply_async(parallel_extract_keyword,(line,out_put))	#保存處理的結(jié)果,可以方便輸出到文件	res = pool.map(parallel_extract_keyword,lines)	#print("Print keywords:")	#for tag in res:		#print(" ".join(tag))	pool.close()	pool.join()	print("并行處理花費時間{t}s".format(t=time.time()-t1))

運行:

python data_process_by_multiprocess.py message.txt

message.txt是每行是一個文檔,共581行,7M的數(shù)據(jù)

運行時間:

不使用sleep來掛起進程,也就是把time.sleep(random.random())注釋掉,運行可以大大節(jié)省時間。

以上這篇python多進程提取處理大量文本的關(guān)鍵詞方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 景东| 阳山县| 崇州市| 日喀则市| 德江县| 巴塘县| 含山县| 博客| 宁南县| 织金县| SHOW| 阿克| 阜城县| 响水县| 长治市| 江都市| 前郭尔| 丽江市| 广州市| 海安县| 边坝县| 巨野县| 高雄县| 铅山县| 甘谷县| 定南县| 宜州市| 凉山| 安新县| 千阳县| 元朗区| 乌拉特前旗| 简阳市| 石家庄市| 通州区| 伽师县| 莱阳市| 瑞昌市| 武平县| 察隅县| 独山县|