文本分析入门(一)

今天在图书馆查了不少资料,感觉没什么特别好的学习途径。
主要通过博客,李航的《统计学习方法》,相关比赛代码来学习。

首先还是介绍几个名词,一个新领域总是有很多新名词。

  1. Tokenization:将文本转化为tokens的过程

  2. Tokens:在文本里的展示的单词或实体

  3. Text object:一个句子、短语、单词或文章

文本分析也好,平时做的数据挖掘也好,开始都是需要数据预处理。

文本分析点数据预处理的过程主要包括以下三个部分:

  1. 噪声移除

  2. 词汇规范化

  3. 对象标准化

这里我们首先介绍噪声移除。
所谓噪声移除就是把对我们来说没有用的冗余tokens去掉,例如语气词。
PS:在情感分析中,语气词、感叹号是应该保留的,因为他们对表示语气程度、感情色彩有一定的贡献和意义
比较常用的方法是通过先设置好噪音词典,然后遍历一下文本,去除那些被词典标注为噪音的tokens。

写一个噪声移除的函数

#先准备一个噪音词典,记录了你要除掉的tokens。
noise_list=['I','you','me','he','her','they','them','a','an','the','...']

def remove_noise(text):
    words=re.split('[, ]',text)
    remove_noise_words=[word for word in words if word not in noise_list]
    remove_noise_text=' '.join(remove_noise_words)
    return remove_noise_text


示例

结果很明确。

要注意的是split和re.split的区别。
re.split可以用多个分隔符分割文本。

split适合於单个分隔符,当需要使用多个分隔的时候,可以逐次使用。
re.split适合多个分隔符,使用起来有两种方式
比如我代码中使用的,words=re.split(’[, ]’,text)
在这里,split的第一个参数,也就是传入分隔符的。
我传入了一个列表,里面有两个元素,逗号和空格。
注意这个列表里每个元素之间没有空格和逗号,因此有空格的话就说明要通过空格分隔。
为了清楚一点,再举一个例子。
re.split("[;,?]")
这个则是实现分号,逗号,问号三个分隔符。

还可以使用正则表达式处理一些特定模式的噪音,
函数:

def remove_regex(input_text,regex_pattern):
    urls=re.finditer(regex_pattern,input_text)
    for i in urls:
        input_text=re.sub(i.group().strip(),'',input_text)
    return input_text

调用:

regex_pattern=['#[\w]*','#[\w]','#[\w][\w]']

for regex_patterns in regex_pattern:
    result=remove_regex("i #dont like sing jump and rap",regex_patterns)
    print(result)

结果:

在这里插入图片描述

通过结果大家应该可以看出
regex_pattern=[’#[\w]*’,’#[\w]’,’#[\w][\w]’]
各部分代表的意思。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章