python实现关键词提取的示例讲解【永利电子游戏

2019-06-07 作者:计算机教程   |   浏览(136)

经常需要通过python代码来提取文本的关键词,用于文本分析。而实际应用中文本量又是大量的数据,如果使用单进程的话,效率会比较低,因此可以考虑使用多进程。

新人小菜鸟又来写博客啦!!!没人表示不开心(>_<)

python的多进程只需要使用multiprocessing的模块就行,如果使用大量的进程就可以使用multiprocessing的进程池--Pool,然后不同进程处理时使用apply_async函数进行异步处理即可。

今天我来弄一个简单的关键词提取的代码

实验测试语料:message.txt中存放的581行文本,一共7M的数据,每行提取100个关键词。

文章内容关键词的提取分为三大步:

代码如下:

永利电子游戏网站,(1) 分词

#coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
from multiprocessing import Pool,Queue,Process
import multiprocessing as mp 
import time,random
import os
import codecs
import jieba.analyse
jieba.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 tags
if __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))
 #保存处理的结果,可以方便输出到文件
 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))

(2) 去停用词

运行:

(3) 关键词提取

python data_process_by_multiprocess.py message.txt

分词方法有很多,我这里就选择常用的结巴jieba分词;去停用词,我用了一个停用词表。

本文由永利电子游戏网站发布于计算机教程,转载请注明出处:python实现关键词提取的示例讲解【永利电子游戏

关键词: