python提取关键词
Ⅰ python如何实现提取文本中所有连续的词语
经常需要通过Python代码来提取文本的关键词,用于文本分析。而实际应用中文本量又是大量的数据,如果使用单进程的话,效率会比较低,因此可以考虑使用多进程。
python的多进程只需要使用multiprocessing的模块就行,如果使用大量的进程就可以使用multiprocessing的进程池--Pool,然后不同进程处理时使用apply_async函数进行异步处理即可。
实验测试语料:message.txt中存放的581行文本,一共7M的数据,每行提取100个关键词。
代码如下:
[python] view plain
#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))
运行:
python data_process_by_multiprocess.py message.txt
message.txt是每行是一个文档,共581行,7M的数据
运行时间:
不使用sleep来挂起进程,也就是把time.sleep(random.random())注释掉,运行可以大大节省时间。
Ⅱ 怎样用python进行关键词提取
关键字具体是什么?
字符串比对就行了
html是beautifulsoup或者正则
json就更简单了
Ⅲ 如何查找Python中的关键字
1、用python这么久就没遇到过需要查找其关键字的时候,就那么点关键字看几遍后,基本都不会忘啦。而且写程序时,不管你用的是vim、gedit还是pycharm,遇到关键字都会变颜色提醒的呀。
2、交互模式下,试过可行的:
import__builtin__
dir(__builtin__)
help(__builtin__)
Ⅳ 怎么用python依据多个关键词提取Excel里关键词所在的整行内容
没有数据,模拟几条说明常规思路。
a=['PGSC1','PGSC3','PGSC6','PGSC7']
b=[['PGSC1','A',555],['PGSC2','B',988],['PGSC3','C',7666],['PGSC7','P',8767],['PGSC1','A',567]]
data=[]
for x in a:
for y in b:
if x==y[0]:
data.append(y)
print(data)
当然,你也可以用numpy或者pandas来处理会更方便。
Ⅳ python 提取文本关键字 link-id输出
Ⅵ python怎么提取关键词
你好, 那个r'.*?('+ lste +').*?‘ 会吧你这个关键字前面和后面的文字都匹配了,所以当你的那个关键字多次出现的时候,就会报那个重复出现的错了。
你直接
hh = re.findall(lste, gg)就可以了呀?
或者是还有什么需要匹配的东西,我看你后面好像要将结果连接起来,但是你匹配出来的都是关键字,直接连接的话,其实就是多个关键字的拼接了。
Ⅶ 在python 环境下,使用结巴分词,自动导入文本,分词,提取关键词.脚本 大侠给个
#-*-coding:UTF-8-*-
importjieba
__author__='lpe234'
seg_list=jieba.cut("我来到北京天安门",cut_all=True)
print','.join(seg_list)
...
Loadingmodelfromcache/var/folders/sv//T/jieba.cache
我,来到,北京,天安,天安门
Loadingmodelcost0.433seconds.
.
Processfinishedwithexitcode0
Ⅷ python 提取有关键词的句子怎么做
高频词提取:
# !/usr/bin/python3
# coding:utf-8
import jieba.analyse
jieba.load_userdict('dict.txt') # dict.txt自定义词典
content = open('kw.txt', 'rb').read()
tags = jieba.analyse.extract_tags(content, topK=10) # topK 为高频词数量
print("\n".join(tags))
Ⅸ python多个变量中提取多个字
原始数据形式:将需要提取关键词的文章放在一个文件夹下面;接着使用python代码读取每个文件的文件名,以便后面与关键词一一对应;接着读取文件数据并进行预处理,将其中的字母、数字以及下划线去掉;接着提取各个文章的关键词;将结果写在一个csv文件中;
_python的input函数正常来说,一次只能传来一个值,且这个值是一个字符串。如果想传入多个值,我们可以使用字符串的spilt函数,以空格进行字符串的分割,并返回一个列表
Ⅹ python 提取关键字,并插入列表
import re
patt = re.compile(r'''
(?P<dt>\d{2}-\d{2})
\s
(?P<tm>\d{1,2}:\d{2}:\d{2}\.\d{3})
\s+
(\d+\s*)+
(?P<errorkey>\w)
\s
(?P<flag>\w+)
\s*
\:\s
(?P<content>.*)
''',re.I|re.U|re.X)
keyset = set()
with open("bug.log") as f:
for m in filter(None, map(patt.match, f)):
flagk = m.group('flag')
print m.group('flag')
keyset.add(flagk)
print ','.join(['"%s"'%k for k in keyset])