Python3 利用openpyxl 以及jieba 对帖子进行关键词抽取 ——非民主相关帖子处理

Python3 利用openpyxl 以及jieba 对帖子进行关键词抽取 ——非民主相关帖子处理

20180421工作笔记

一、工作

上回说道,新增的500多条非民主子话题中含有大量与“腐败”相关的词汇,很可能在分类的时候,一起分到民主相关之中的,导致分类结果不准确,所以需要对其进行筛选一番。

1.筛选

首先规定一下筛选条件,就是如果一个帖子中出现“腐败”等词汇的时候,不将它选入“非民主子话题帖子”之中。再这里,我准备一个有1000多条法制相关的帖子,作为筛选输入——"fz.xlsx"

筛选条件

L2=['腐败','反腐','受贿','贿赂','贪污','监督','反腐倡廉','行贿','反腐倡廉','廉洁','廉政','落马','自由','民主制度','言论自由']

筛选思想大致和上回的一样,主要还是关键词对比

from openpyxl import load_workbook
from openpyxl import Workbook
import jieba.analyse

wr=load_workbook('fz.xlsx')
osheet=wr.active
orow=osheet.max_row

ww=Workbook()
asheet=ww.active
asheet.title="fa"

print(osheet.max_row)
L1=[]
L2=['腐败','反腐','受贿','贿赂','贪污','监督','反腐倡廉','行贿','反腐倡廉','廉洁','廉政','落马','自由','民主制度','言论自由']
L3=[]
f1=True
for i in osheet["A"]:
    content=str(i.value)
    keywords=jieba.analyse.extract_tags(content,topK=1000)
    for j in keywords:
        for k in L2:
            if j==k:
                f1=False
    if f1:
        L1.append(content)
        L3.append(keywords)
    f1=True
print(len(L1))

a="A"
b="B"
n=1
for i in L1:
     asheet["%s%d" % (a,n)].value=str(i)
     
     n=n+1

ww.save('fzresult.xlsx')
2.一些修改

由于开毕设会议,导师和我说了,选关键词可以多选择一些,这样结果会比较准确,所以在这将之前固定位100的循环条件都修改了。

由于我的列生成公式能生成26^2个列,比200大得多,所以不需要修改。

其实主要是要将Labeld值一起加进去

O1=alphabet[e]+alphabet[m-3]
O2=alphabet[e]+alphabet[m-2]
O3=alphabet[e]+alphabet[m-1]

用O1,O2,O3来动态地得到最后三个列号(因为关键词个数不确定)

L5=[]
L5.append(O1)
L5.append(O2)
L5.append(O3)
L6=['B','C','D']
k=0
for j in L5:
    n=2
    c=1
    print(j)
    for i in osheet2[L6[k]]:
        if c>1:
            asheet["%s%d" % (j,n)].value=i.value
            n=n+1
        c=c+1
    k=k+1

最后将BCD 三列的数值读进去就可以了

from openpyxl import load_workbook
from openpyxl import Workbook
import jieba.analyse

wr=load_workbook('sta.xlsx')
osheet=wr.active
orow=osheet.max_row

ww=Workbook()
asheet=ww.active
asheet.title="ml"

alphabet=[]
o='A'
for i in range(26):
    
    alphabet.append(o)
    p=ord(o)+1
    o=chr(p)

k=0
n=1

e=0
m=0

num=200
tempL=[]
testL=[]
tempc=0
for i in osheet["A"]:
    if tempc<num:
        tempL.append(i.value)
        testL.append(i.value)
    else:
        break
    tempc=tempc+1

tempL.append("民主制度")
tempL.append("言论自由")
tempL.append("民主监督")

num2=num+3
for i in tempL:
    if k<=num2:
        if k<26:
            a=alphabet[k]
            asheet["%s%d" % (a,n)].value=str(i)
        else:
            if m==26:
                m=0
                e=e+1
            b=alphabet[e]
            c=alphabet[m]
            d=b+c
            asheet["%s%d" % (d,n)].value=str(i)
            
            m=m+1
    else:
        break
    k=k+1

O1=alphabet[e]+alphabet[m-3]
O2=alphabet[e]+alphabet[m-2]
O3=alphabet[e]+alphabet[m-1]
ww.save('t2.xlsx')

wr2=load_workbook('FMLin.xlsx')
osheet2=wr2.active
print(osheet2.max_row)
L1=[]

for i in osheet2["A"]:
    k=0
    content=str(i.value)
    keywords=jieba.analyse.extract_tags(content,topK=1000)
    L1.append(keywords)
L1.pop(0)#第一个是空的

count=0
L3=[]
L2=[]
flag=False

for i in L1:
    L2=[]
    for g in testL:
        flag=False
        for j in i:
            if g==j:
                flag=True
        if flag:
            L2.append(1)
        else:
            L2.append(0)

    L3.append(L2)
k=0
n=2

for j in L3:
    e=0
    m=0
    for i in j:
        if k<=num2:
            if k<26:
                a=alphabet[k]
                asheet["%s%d" % (a,n)].value=i
            else:
                if m==26:
                    m=0
                    e=e+1
                b=alphabet[e]
                c=alphabet[m]
                d=b+c
                asheet["%s%d" % (d,n)].value=i
                m=m+1
            
        k=k+1
    n=n+1
    k=0
print(n)

L5=[]
L5.append(O1)
L5.append(O2)
L5.append(O3)
L6=['B','C','D']
k=0
for j in L5:
    n=2
    c=1
    print(j)
    for i in osheet2[L6[k]]:
        if c>1:
            asheet["%s%d" %(j,n)].value=i.value
            n=n+1
        c=c+1
    k=k+1
ww.save('t2.xlsx')

其中FMLin表格就是500条民主+500条不相关的+它们的Label等级合成的:

FMLin.xlsx:

t2.xlsx:

二、总结反思

做了一下午和一晚上,看逼乎浪费了挺多时间的。。。以后来实验室争取不看逼乎,多看文章代码、多学习,别懒费时间。

三、接下来的任务

继续看scikitlearn的使用方法,周一老师要看演示,就很慌。。。说实在的我这个“算法应用”,到时候答辩演示的时候我都不知道该咋办。。。老师也不让我用黑框框演示。。。不管了,能调出结果再说吧。

猜你喜欢

转载自www.cnblogs.com/cafe3165/p/8903606.html
今日推荐