文章目录

  • 前言
  • 一、概述
  • 1. 处理和理解文本(文本标准化)

  • 1.1 去除HTML标签
  • 二. 去除非中文字符
  • 总结



前言

这里是文本分析系列文章的开篇,我将会提供一个完整的基于python的系列nlp教程,有兴趣的可以关注一波~


一、概述

自然语言处理(NLP)在现今社会上扮演着非常重要的角色,利用它可以轻松的实现人工智能对话和语义理解,模型分割以及文本聚类等一系列原来难以想象的事情,现在我们来简要介绍相关的内容。由于本文主要着重介绍原理,故对语言学相关的内容不做概述,对大纲式的NLP简介也不加赘述,有兴趣读者可以自行研究

1. 处理和理解文本(文本标准化)

从互联网上抓取到的信息嘈杂繁多,通常是含有各种不规则化的碎片信息,下面给出一个基本示例:

示例以截图的形式给出,具体文件可以自己使用beautifulsoup查找

</div><div class="para" label-module="para">澎友圈集评论分享、关注“澎友”、热点追踪等社区功能为一体的高质量用户互动社区,分为“关注”、“推荐”、“问吧”三大版块。</div><div class="para" label-module="para">用户可以在“关注”中订阅心怡的澎友,时刻了解他们的观点、动态。</div><div class="para" label-module="para">“推荐”中的话题词实时追踪当下热点,让人快速获取新闻时事的重要节点<sup class="sup--normal" data-sup="12" data-ctrmap=":12,">[12]</sup><a class="sup-anchor" name="ref_[12]_14697332"> </a></div><div class="para" label-module="para">“问吧”是一个新型问答社区。问吧中最基本的元素是“话题”,“话题”的核心是人,各个领域的名人、达人会在问吧中开设自己的话题,迎接网友提问。在积累了一些问题后,名人和达人将陆续开始回答网友的问题。<sup class="sup--normal" data-sup="5" data-ctrmap=":5,">[5]</sup><a class="sup-anchor" name="ref_[5]_14697332"> </a>
>用户在文章中的评论、问吧里的问答可实现同步到澎友圈。同时,用户还可以在澎友圈发布自己的原创帖,例如记者手记、采访现场图、观点评论、生活随感小视频等,随时随地记录你在澎湃的足迹。<sup class="sup--normal" data-sup="12" data-ctrmap=":12,">

可以看到,这种半结构化数据中有很多无用信息,因此我们需要将信息进行筛选和去除,这是标准化工作的一部分。

1.1 去除HTML标签

可以使用如下代码去除代码中的HTML标签

import requests
import re
from bs4 import BeautifulSoup
def strip_html_tags(text):
	soup = BeautifulSoup(text,"html.parser")
	[s.extract() for s in soup(['iframe','script'])]
	stripped_text = soup.get_text()
	stripped_text = re.sub(r'[\r|\n|\r\n]+', '\n',stripped_text)
	return stripped_text
text = 上面提示的文本
clean_content = strip_html_tags(text)
print(clean_content)

此段代码可以除去上述文本文件中的HTML标签,经过上述处理后,我们的文件没有HTML标签。下一个步骤是判断文章主题内容是否符合要求。

二. 去除非中文字符

这里使用了查找方式来判断是否去除非中文字符

a = re.findall("\"(.*?)\"",stripped_text)#这里将上述不规则文件变成了一个列表
list = []
c = len(a)
for i in range (c):#这里判断了列表a中的每个元素是否是中文,取出是中文字符的元素,放到list里面
    if '\u4e00' <= a[i] <= '\u9fff':
        print(a[i])
        list.append(a[i])#这里就是所有的中文字符集合
#使用opencc来对文档进行繁简转化操作,具体安装教程会做一期单独文章来介绍
import opencc
c = opencc.openCC('t2s')#这里是繁体转简体的相关资源库的调用操作
normal_text = c.convert(text)#这里使用了convert函数进行切换操作

经过两段文字后我们就得到了一个完整的语料,就像这样

澎友圈集评论分享、关注“澎友”、热点追踪等社区功能为一体的高质量用户互动社区,分为“关注”、“推荐”、“问吧”三大版块。用户可以在“关注”中订阅心怡的澎友,时刻了解他们的观点、动态。“推荐”中的话题词实时追踪当下热点,让人快速获取新闻时事的重要节点[12] “问吧”是一个新型问答社区。问吧中最基本的元素是“话题”,“话题”的核心是人,各个领域的名人、达人会在问吧中开设自己的话题,迎接网友提问。在积累了一些问题后,名人和达人将陆续开始回答网友的问题。[5]
用户在文章中的评论、问吧里的问答可实现同步到澎友圈。同时,用户还可以在澎友圈发布自己的原创帖,例如记者手记、采访现场图、观点评论、生活随感小视频等,随时随地记录你在澎湃的足迹。

这样处理后我们就得到了一个中文语料。下一步的操作是对中文语料进行分词操作,分词可以将一整片的语料分解成一个个短语,一个个短语可以进行后续的 操作。这里使用了jieba中文分词软件,具体的安装环境和简单的使用介绍,在稍后也会做一期文章来介绍。这里直接导入就可以了。

import jieba
tokens = jieba.lcut(text)#这里使用jieba分词,分出来的词语是一个个列表元素
#接着去除停用词,这里使用了一个一行判断
filtered_tokens = [token for token in tokens if str(token) not in stopwords]
text1 =" ".join(filtered_tokens)#这里把最后的列表去除掉,变成了一个str,两个词语之间以空格作区分

完成后,我们得到一个最终结果 如下

‘澎友 圈集 评论 分享 关注 澎友 热点 追踪 社区 功能 一体 高质量 用户 互动 社区 分为 关注 推荐 三大 版块 用户 关注 订阅 心怡 澎友 时刻 了解 观点 动态 推荐 题词 实时 追踪 当下 热点 快速 获取 新闻 时事 重要 节点 一个 新型 问答 社区 基本 元素 话题 话题 核心 各个领域 名人 达人会 开设 话题 迎接 网友 提问 积累 问题 名人 陆续 回答 网友 问题 用户 文章 评论 问答 实现 同步 澎友圈 用户 澎友圈 发布 原创 记者 手记 采访 现场图 观点 评论 生活 随感 小视频 随时随地 记录 澎湃 足迹’

这样,我们的文本预处理就做好了,将其封装成一个函数模块,在以后就可以随意调用,无需再次调整了,这也为我们下一次的特征工程分析,奠定了坚实的基础~
那么,我们下期再见啦~


总结

有什么总结,没有总结,把关注给我点了,哼╭(╯^╰)╮