作者:mobiledu2502860093 | 来源:互联网 | 2023-08-24 12:33
1. 文本预处理概述
和机器学习任务一样,自然语言处理任务的第一步工作也是文本(数据)准备或叫文本(数据)预处理。文本预处理的流程如下图所示:
文本预处理工作以分词步骤为界,之前的文本标准化和文本清洗是语料级(篇章级)颗粒度文本处理,之后词的清洗、标准化和文本表示是单词级颗粒度文本处理。
语料级文本处理的作用对象是数据集中的每一篇语料,它比单词级文本处理效率更高,并且可以提前去除影响分词效果的障碍(如:英文中按空格分词,但与单词直接相邻的逗号等标点会产生非标准单词的分词结果(‘word,’ 标准形式应该是’word’))。
单词级文本处理执行在语料分词之后,它的处理对象是每篇语料中的每一个单词,主要执行单词的过滤、单词写法的标准化(如大写数字与阿拉伯数字书写形式的统一、统一英文单词不同时态、语态书写形式的统一等)、拼写纠错和文本表示四大步工作。
2. 文本标准化
2.1 字符编码标准化(全角英文字符转半角)
在计算机中,所有中文字符都是全角字符,而英文字母、阿拉伯数字及符号有全角和半角两种unicode编码方式。它们的全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E),半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E);而空格符比较特殊,全角unicode编码为12288 (0x3000),半角为32 (0x20)。
可见除空格符外,每个全角字符的unicode编码等于其半角字符的unicode编码加65248,因此字符unicode编码标准化实现代码如下:
def full_to_half(text:str): _text = ""for char in text:inside_code = ord(char)if inside_code == 12288: inside_code = 32elif 65281 <= inside_code <= 65374: inside_code -= 65248_text += chr(inside_code)return _text
2.2 英文大小写字母统一化
英文字母大小写的统一化可直接借助python内置字符串方法实现,具体代码如下:
def upper2lower(text:str):return text.lower()
2.3 中文繁简字统一化
中文繁体字与简体字的统一化借助opencc包的OpenCC类实现,该类通过不同的转换功能代码实现不同的文字转化功能,转换功能代码表如下所示:
转换代码 | 功能说明 |
---|
t2s | 繁体中文转简体 |
s2t | 简体中文转繁体 |
s2twp | 简体中文转繁体中文(带短语) |
t2hk | 繁体中文转繁体(香港标准) |
hk2s | 繁体中文(香港标准)转简体中文 |
s2hk | 简体中文转繁体中文(香港标准) |
t2tw | 繁体中文转繁体(台湾标准) |
tw2s | 繁体中文(台湾标准)转简体中文 |
tw2sp | 繁体中文(台湾标准)转简体中文(带短语) |
s2tw | 简体中文转换成繁体中文(台湾标准) |
繁简体统一化实现代码如下:
def chinese_standard(text:str, conversion=&#39;t2s&#39;):cc = OpenCC(conversion)return cc.convert(text)
3. 文本清洗
文本清洗中,常通过Unicode码过滤来去除非文本内容。Unicode码表中,中日韩统一表意文字字符区间为 4E00~9FA5,半角英文字母、阿拉伯数字及符号的字符区间为 0x21~0x7E,所以标准文本字符范围为 [4E00,9FA5]∪[0x21,0x7E][\text{4E00}, \text{9FA5}] \cup[\text{0x21}, \text{0x7E}][4E00,9FA5]∪[0x21,0x7E]。
非文本内容过滤与标点符号过滤一同借助正则表达式实现,具体代码如下:
import re
def clear_character(text): pattern = ["[^\u4e00-\u9fa5^a-z^A-Z^0-9^\u0020^\u0027^\u002e]", "\.$" ] return re.sub(&#39;|&#39;.join(pattern), &#39;&#39;, text)
4. 分词
敬请详见作者文章: 文本表示:分词.
5. 词的清洗
敬请详见作者文章: 文本表示:词的清洗.
6. 词的标准化
敬请详见作者文章: 文本表示:词的标准化.
7. 拼写纠错
敬请详见作者文章: 文本预处理:拼写纠错.
7. 文本表示
敬请详见作者文章: 文本表示:文本表示(文本特征编码).