LSTM微博评论情绪识别二分类项目jieba分词遇到的问题

LSTM微博评论情绪识别二分类项目:

提示:这里简述项目相关背景:

LSTM微博评论情绪识别二分类项目是对.csv文件的数据集处理,首先要将评论进行清洗,分词,去掉停用词等处理。


无法正确分词----jieba分词库

提示:这里描述项目中遇到的问题:
问题1:对于“不开心”它分成了“开心”,无法识别出否定的“不”,经过处理后发现是停用表中含有“不”,所以我去掉了停用表里面的“不”,“不是”,“不要”等词,以及表示嘿嘿,哈哈等情绪的词汇。问题表现它可以识别【不】【开心】却无法对后续的情绪处理带来好处。
问题2:无法识别断句,比如:微信(微信号:XXXXXX),它将微【微信微】和 【信号】分在了一起,后来我发现是我提前将所有的标点符号再分词前给删掉了,现在分成了【微信】【微信】【号】但是现在的问题是:我将一些不必要的 【@小小】给删除后,再分的词,但是发现了槽点,【@小小】前后两个没有关系的句子中结合出了一个单词。我无语了。

问题现象:
原始句子://@刺客小A: 好好的不行吗嘛!一定要剧透,自己知道就算了,还转发!唉伊!//@璐璐小仙: 剧透了,剧透了。姚双喜再恶心点。人品再差一点,每次都要哭到鼻涕全都出来。看到他就想快近。还是三顺可爱,好好的不行嘛~[太开心]

分词后:好好 不行 一定 要剧 透 知道 转发 伊剧 剧透 姚 双喜 恶心 点 人品 差一点 每次 哭 鼻涕 全都 看到 想 快 近 三顺 可爱 好好 不行 太 开心

原始句子:回复@我要你做回自己:关注锦庭火锅道官方微信(微信号:zhongguohuoguodao),发送自己的美照到公共账号:麒麟锦庭火锅道,我们会专门为大家定制专属于您的电子VIP会员卡,享受全单8.8折的优惠哦。 //@我要你做回自己:怎么玩 //@麒麟锦庭火锅道:[亲亲][亲亲]谢谢大家

分词后:回复 关注 锦庭 火锅 道 官方 微信微 信号 发送 美照 公共 账号 麒麟 锦庭 火锅 道 会 专门 定制 专 属于 电子 会员卡 享受 全单 折 优惠 玩 亲亲 亲亲 谢谢

在这里插入图片描述


原因分析:

提示:这里填写问题的分析:
问题1:我在分词字典中加入了【不开心】,【嘿嘿】,【哈哈】等表示情绪的词语,因为我发现就算我可以得到分词结果【不】【开心】,模型还是无法识别出【开心】【不开心】是两个相对的意思,它把【开心】作为关键词,这样积极和消极那个特征中含有的【开心】多,模型就会把它分为那个情绪标签。所以我直接加入【不开心】。但是这不是长久的发展,因为【不难受】等这样的情况太多了。
问题2:我发现像我处理掉的 【@小小】【https://editor.csdn.net/md?not_checkout=1&spm=1015.2103.3001.8066&articleId=138742678】【XXXXXXXX.qq.com】等无用的信息和标点符号一样有停顿的作用。


解决方案:

提示:这里填写该问题的具体解决方案:

def ONE_comment_process(content):
    content = re.sub(r'(https?|ftp|file|www\.)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]', '[URL]', content)
    content = re.sub(r'[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+[\.][a-zA-Z0-9_-]+', '[email]', content)
    content = re.sub(r'(\/\/){0,1}@.*?(:|:| |\n)', '[FORWARD]', content)
    content = re.sub(r'(\d+\.\d+)|(\d+)', '[number]', content)
    content = re.sub(r'[\.。…]{2,}', '。', content)
    content = re.sub(r'~{2,}', '~', content)
    content = re.sub(r'[!!]{2,}', '!', content)
    content = re.sub(r'[??]{2,}', '?', content)
    content = re.sub(r'//', ' ', content)
    content = re.sub(r'["“”\'‘’]', '', content)
    content = re.sub(r'@.*?(,| )', '[username]', content)
    content = re.sub(r'@\S+', '[username]', content)
    # 使用 jieba 进行分词
    jieba.load_userdict("jieba.txt") #增加词典
    segments = jieba.cut(content, cut_all=False)  #cut_all=False 表示精确模式
    processed_content = []
    i = 1
    for segment in segments:
        if re.match(r'^\s+$', segment):  #过滤掉纯空格
            continue
        processed_content.append(segment.strip())
        # 引用停用表stop_words
        with open("cn_stopwords.txt", "r", encoding="utf-8") as lines:
            stop_words = []
            for line in lines:
                stop_word = line.strip()  # 使用strip()方法删除每行两端的空白字符(包括换行符)
                if stop_word:  # 如果停用词不为空,则添加到列表中
                    stop_words.append(stop_word)
        #特色的停用词,用户自定义添加
        ignore_chars = ["/",  "~", "~", "-", "」", "「", "@", "【", "】", "#", ":", "[", "]", "\"", """, "*",
                        "(", ")", "!", ".", ",", "`", "'", ',']
        words_list = []
        for word in processed_content:
            if not word:
                continue
            if word in ignore_chars:
                continue
            if word not in stop_words:
                words_list.append(word)
    return words_list
  • 26
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值