项目实训第十一周(5.10-5.16)[基于关键词的文本数据清洗]

在经过一个五一小长假,我们得到了极大的休整。我们在一起商量的时候,碰撞出一些火花,对第二种思路产生了极大的影响。按照项目实训第五周的设想,我们要得到具体的问题,然后在对问题进行回答。这中间给人一种感觉,问什么我要先生成问题成文本,但是在对生成的文本进行回答时还需要把文本转变成变量呢?其实道理很简单,可以认为这样操作具有极高的可解释性。但是鉴于学长给我们指出可以不用管什么方式,甚至说根本不需要生成问题,就可以完成分类的操作,就是我们真正想要的东西。就好比我们去隔间洗澡,衣服也脱了,发现淋浴头坏了,我们要换个隔间。这时候,我们不在乎面子问题,就完全没必要穿好脱的所有衣服再出去,这就非常麻烦了。所以我们打算我们不生成文本问题,而是生成向量问题,这样不就能更好的避免先解码再编码的复杂过程,当然,方便的同时,我们损失了可解释性,毕竟,有得就有失嘛。
我个人又对数据进行进一步的处理,主要完成基于关键词的文本数据处理。我发现,在考生答案里,有许多考生答案长篇大论,但是都不在点上,所以需要对一些“废话”进行剔除。这里我想到,借用关键词对文本进行筛选,将会大大降低废话的概率。现在第一步,如何得到关键词。这里,我经过搜索,发现jieba库里有jieba.analyse.textrank(sentence, topK=20),这将提供给我最为基础的关键词,topK参数是选取排名的数量。但是对于问答题,还需要考虑实例,比如我们的选题中有张某与李某,所以这也得算作关键词的一员,需要人为添加。思路解释清楚了,直接放代码。

import jieba.analyse
import pandas as pd
import csv

def keywords(sentence):
    '''
    取前句子中二十个关键词
    :param sentence: 句子
    :return: 关键词列表
    '''
    keywords = jieba.analyse.textrank(sentence, topK=20)
    return keywords

def select(sentence,keywords):
    '''
    筛选句子中含有关键词的部分,并做符号清洗
    :param sentence: 句子
    :param keywords:关键词列表
    :return:筛选后的句子
    '''
    result = []
    new_sentence = []
    sentence = sentence.replace('<p>', ',').replace('</p>', ',')\
            .replace('<P>', ',').replace('</P>', ',')\
            .replace('&nbsp;', ',').replace('、',',')\
                .replace('</>',',').replace('<br>',',').replace('<BR>',',')\
                .replace(' ','').replace('\n','').replace('。',',').replace(':',',').replace('"','')\
    .replace('.',',').replace('(',',').replace(')',',').replace('《','').replace('》','')
    splited = sentence.split(',')
    for s in splited:
        for keyword in keywords:
            if keyword in s:
                result.append(s)
        else:
            pass
    for juzi in result:
        if juzi not in new_sentence:
            new_sentence.append(juzi)
    list = [str(i) for i in new_sentence]
    new_sentence = ','.join(list)
    print(new_sentence)
    return new_sentence

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值